Как установить схему именования дампов ядра без su / sudo? - PullRequest
0 голосов
/ 13 сентября 2010

Я занимаюсь разработкой программы MPI на компьютере с Linux, где у меня нет доступа sudo / su. Поскольку моя программа в настоящее время segfaults, я хотел бы изучить дампы ядра через gdb. К сожалению, поскольку программа многопоточная, все потоки записывают в один дамп ядра. Поэтому я хотел бы иметь возможность добавлять PID к каждому отдельному дампу ядра для каждого процесса.

Я знаю, что есть способ сделать это через / proc / sys / kernel / core_pattern, однако у меня нет доступа для записи в него.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 08 марта 2011

Отладка приложений MPI в системах, настроенных таким способом, может быть затруднена, если у вас нет корневого доступа. Один из способов обойти это - использовать Valgrind , чтобы получить трассировки стека для ваших segfault (s). Это будет полезно только при условии, что ваше приложение завершится сбоем в течение разумного периода времени при замедлении через Valgrind, и что в этом случае оно по-прежнему не работает.

Обычно я запускаю приложения MPI под Valgrind так:

% mpiexec -n 5 valgrind -q /path/to/my_app

Это отправит все выходные данные Valgrind к стандартной ошибке. Но если я хочу, чтобы выходные данные были разделены на разные файлы, то вы можете немного поумнеть:

% mpiexec -n 5 valgrind -q --log-file='vg_out.%q{PMI_RANK}' /path/to/my_app

Это настройка для MPICH2. Я думаю, что для Open MPI вам нужно заменить PMI_RANK на OMPI_MCA_ns_nds_vpid, но если это не сработает для вас, вам нужно будет проконсультироваться с разработчиками Open MPI в их списке обсуждений. В любом случае это приведет к N файлам, где N - это размер MPI_COMM_WORLD, каждый с именем vg_out.0, vg_out.1, ..., до vg_out.$(($N-1)), каждый из которых соответствует рангу в MPI_COMM_WORLD.

...