GDB - как узнать откуда вышла программа - PullRequest
9 голосов
/ 16 июня 2011

При отладке программы в GDB я получаю неожиданное «нормально завершенное выполнение программы».Поэтому мне интересно, есть ли способ узнать, откуда (какая строка) вышла программа?

Программа многопоточная, если это имеет значение.

Ответы [ 3 ]

11 голосов
/ 16 июня 2011

Вы можете попробовать команду GDB break exit, чтобы установить точку останова при вызове библиотеки exit (2).Если это не дает вам то, что вам нужно, может быть break _exit.Возможно, вам придется запустить вашу программу с помощью «sta», прежде чем использовать последнюю точку останова.В любом случае вы сможете использовать команду where, чтобы получить трассировку стека, показывающую, где вы были, когда программа решила выйти.

7 голосов
/ 16 июня 2011

Обычно с помощью приведенной ниже команды, когда приложение завершает выполнение:

(gdb) thread apply all bt

Конечно, если вы хотите знать точную строку, вы должны скомпилировать ваше приложение с отладочными символами, т.е. -g

3 голосов
/ 16 июня 2011

Установите точку останова на _exit, а затем проверьте стек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...