Трудность получить GDB для загрузки отладочных символов - PullRequest
3 голосов
/ 15 августа 2010

Я очень часто использую GDB для отладки программ на C / C ++, и я достаточно хорошо осведомлен о том, как она работает и что она может делать.

Однако, время от времени я сталкиваюсь с проблемами, которые таинственно могутпохоже, что GDB правильно загружает символы из файла ядра.

В настоящее время у меня есть двоичный исполняемый файл в общем каталоге NFS.Исполняемый файл определенно был скомпилирован с флагом -g3.Исполняемый файл потерпел крах и сбросил файл ядра в каталог / home моего Linux-бокса.

По какой-то причине я не могу заставить GDB загрузить символы из основного файла.

Когда я пытаюсь:

$ gdb <executable_file> <core_file>

GDB загружается, но яне удается получить обратную трассировку, и символы отладки не загружаются.

Если я запускаю GDB, а затем в командной строке GDB я набираю core <core file name>, он загружает файл ядра, и я вижу, что файл ядраопределенно связан с двоичным исполняемым файлом, который потерпел крах ранее.Однако GDB сообщает «Не удалось прочитать действительное изображение объектного файла из памяти», поэтому я не могу получить значимую обратную трассировку, и нет загруженных отладочных символов.

Кто-нибудь знает, что может бытьпричина этого?Обычно у меня нет проблем с тем, чтобы GDB правильно загружал файл ядра и считывал символы отладки, но в этом случае это не работает.Может ли это быть потому, что двоичный исполняемый файл хранится в общем монтируемом NFS?

Ответы [ 2 ]

5 голосов
/ 15 августа 2010

Проверьте свои ограничения.Это довольно распространенный источник путаницы.Усеченные файлы ядра могут сделать любую форму проверки GDB бесполезной, в большинстве случаев вы можете прочитать имя двоичного файла, а если размер файла ядра не менее 8 КБ, вы можете получить трассировку стека.

0 голосов
/ 15 августа 2010

загружаются ли все общие библиотеки? попробуйте

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