Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > crash dump


Автор: just_geek 26.3.2009, 15:29
Вообщем интересует, есть ли возможность в никсах делать подобие crash dump'ов (минидампов) в Windows? Если есть, каким образом они создаются, и как использовать в дальнейшем для отладки.

Хочется чтобы при сегфолте, не просто в консоли писалось segmentation fault, а завершалось все красиво smile

p.s. и будет ли в этом какой-то смысл?

Автор: vinick 26.3.2009, 16:35
Есть такая возможность. называется  core.  При получении определенного сигнала (полный список см. в man 7 signals) в текущем каталоге формируется файл core, может быть core.XXX, где XXX это PID  упавшего процесса.  core можно загрузить в отладчик и увидеть состояние процесса на момент падения.
Код

$ gdb myapp core


В современных дистрибутивах по умолчанию создание дампа отключено. Регулируется это командой ulimit -c, которая может задавать максимальный размер core-файла в 512-байтных блоках.

А если хочется, чтобы совсем красиво, посмотри как в KDE краши обрабатываются.

Автор: just_geek 26.3.2009, 16:53
Сразу скажу, опыт программирования под линукс не шибко большое smile
Цитата

В современных дистрибутивах по умолчанию создание дампа отключено. Регулируется это командой ulimit -c, которая может задавать максимальный размер core-файла в 512-байтных блоках.


Т.е. если отключено я могу включить используя ulimit -c? Про этот момент поподробнее, пожалуйста.

Цитата

А если хочется, чтобы совсем красиво, посмотри как в KDE краши обрабатываются.

Гляну. Вопрос тогда такой. Все приложения запущенные в KDE так обрабатывают крэши? Или только привязанные к самому КДЕ?

И будут ли отличия в реализации этой фичи в линуксе и фрибсд?

Автор: vinick 26.3.2009, 17:05
Цитата(just_geek @  26.3.2009,  16:53 Найти цитируемый пост)

Т.е. если отключено я могу включить используя ulimit -c? Про этот момент поподробнее, пожалуйста.

Код

$ ulimit -c
0
$ ulimit -c 1000
$ ulimit -c
1000


Можно менять этот параметр из самого приложения через setrlimit(2).


Цитата(just_geek @  26.3.2009,  16:53 Найти цитируемый пост)
Все приложения запущенные в KDE так обрабатывают крэши? Или только привязанные к самому КДЕ?

Скорее всего только привязанные к KDE. 

Автор: just_geek 26.3.2009, 17:21
Спасибо smile А имеет смысл в создании библиотеки которая будет выполнять эти функции и в линуксе, и в винде?

Автор: sparn 30.3.2009, 01:30
http://code.google.com/p/google-breakpad/ - используется mozilla и google. Кроссплатформенная либа для креш репортов. Генерит виндовые minidump'ы под windows, linux и macos.

Автор: just_geek 31.3.2009, 11:54
О, судя по всему то что надо. Жалко что, еще не релиз :( Поковыряюсь smile

Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)