Я очень часто использую GDB для отладки программ на C / C ++, и я достаточно хорошо осведомлен о том, как она работает и что она может делать.
Однако, время от времени я сталкиваюсь с проблемами, которые таинственно могутпохоже, что GDB правильно загружает символы из файла ядра.
В настоящее время у меня есть двоичный исполняемый файл в общем каталоге NFS.Исполняемый файл определенно был скомпилирован с флагом -g3.Исполняемый файл потерпел крах и сбросил файл ядра в каталог / home моего Linux-бокса.
По какой-то причине я не могу заставить GDB загрузить символы из основного файла.
Когда я пытаюсь:
$ gdb <executable_file> <core_file>
GDB загружается, но яне удается получить обратную трассировку, и символы отладки не загружаются.
Если я запускаю GDB, а затем в командной строке GDB я набираю core <core file name>
, он загружает файл ядра, и я вижу, что файл ядраопределенно связан с двоичным исполняемым файлом, который потерпел крах ранее.Однако GDB сообщает «Не удалось прочитать действительное изображение объектного файла из памяти», поэтому я не могу получить значимую обратную трассировку, и нет загруженных отладочных символов.
Кто-нибудь знает, что может бытьпричина этого?Обычно у меня нет проблем с тем, чтобы GDB правильно загружал файл ядра и считывал символы отладки, но в этом случае это не работает.Может ли это быть потому, что двоичный исполняемый файл хранится в общем монтируемом NFS?