LINUX.ORG.RU

Как отловить Segmentaion fault?


0

0

всем привет.

подскажите плз, есть ли какая-либо возможность найти место (в коде программы), где происходит Segmentation fault, после компиляции и запуска. Происходит это не всегда, непонятно почему и где.

Вывод отладочных сообщений (cerr << "message" << endl;) пока ни к чему не привел.

слышал, что можно както посмотреть толи какойто дамп толи че еще после запуска (и вылета) бинарника. Может запускать надо как то по особенному.

компилятор g++, система Slackware 10.1. все собирается с консоли. для сборки используется make.

заранее благодарен.

anonymous

gdb, strace тебе в помощь. только ими надо научиться пользоваться.

Pi ★★★★★
()

1) собираеш программу с флагами -O0 -ggdb

2) запускаеш так: gdb ./soft

3) как только упало пишешь: bt и смотришь в каком месте сегфолт

Esh ★★★★
()
Ответ на: комментарий от Esh

всем спасибо. пойду пробывать.

anonymous
()

>слышал, что можно както посмотреть толи какойто дамп толи че еще после запуска (и вылета) бинарника.

Да, есть такое, core-файл ещё называется. Если он у тебя по умолчанию не генерится, то кажется надо что-то с ulimit поменять. Смотреть его в gdb, командой core core.pid, где core.pid--название файла.

mr ★★
()

Можно еще обработчик SIGSEGV переопределить )

Motl
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.