На отладке c программы - PullRequest
       2

На отладке c программы

0 голосов
/ 13 февраля 2011

У меня есть программа на C, которая выбрасывает segfault.Тем не менее, как я использую GDB, чтобы узнать, где выдается ошибка.Я получаю следующую информацию о стеке ... Я не понимаю, почему # 1 указывает на ?? ().Какова возможная причина этого?Спасибо.

#0  __longjmp () at ../sysdeps/i386/__longjmp.S:68
#1  0x43746a57 in ?? ()

Ответы [ 3 ]

2 голосов
/ 13 февраля 2011

Для отладки вашей программы вам необходимо скомпилировать ее с включенными символами отладки, что можно сделать с помощью флага -g3 при компиляции с использованием GCC.Когда вы запускаете отладочную версию вашей программы в GDB и выполняете bt (для "backtrace"), вы должны получить более разумный фрагмент вывода.

1 голос
/ 13 февраля 2011

GDB не знает название функции, поэтому ставит ??.

вы пробовали компилировать с символами отладки?

0 голосов
/ 13 февраля 2011

Если longjmp() сбивается с пути, как кажется, проблема, вероятно, заключается в том, что вы злоупотребляете им - либо передавая jmpbuf, который никогда не был инициализирован вызовом setjmp(), либо передавая jmpbuf, который был установлен в подпрограмме, которая с тех пор вернулась.

Чтобы узнать больше об отладочной информации, см. Другие ответы и компиляцию с опцией -g.

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