Отладка C-программы в проблеме GDB - PullRequest
1 голос
/ 04 мая 2010

Я пытаюсь запустить мое приложение на GDB. Поэтому я скомпилировал его с опцией «g». Но когда я бегу gdb ./app, я получаю:

DW_FORM_strp pointing outside of .debug_str section [in module /home/w/app]

И я не могу сделать перерыв:

(gdb) break main
No symbol table is loaded.  Use the "file" command. 
(gdb) . 

Ответы [ 2 ]

1 голос
/ 17 июня 2010

Используйте objdump -W, чтобы просмотреть информацию об отладке Dwarf в файле Elf, чтобы увидеть таблицу .debug_str.

Каждый DW_FORM_strp является смещением в этой таблице.

Компиляция с -g (или -g-dwarf2) помещает информацию о гномах в каждый объектный файл. со своей собственной частью .debug_str строк строки.

Связывание этих объектных файлов с -g пытается создать уникальные строки и не обновляет все смещения DW_FORM_strp должным образом. При просмотре с gcc 4.3.4 ld.

Мы случайно вставили CC_FLAGS в ссылку на make-файл.

Обходной путь: не связывать с флагом -g.

1 голос
/ 05 мая 2010

Скорее всего, вы скомпилировали свою программу с более новой версией GCC, но отлаживаете ее со старой GDB.

Иначе, у вас есть некорректная версия GCC, которая помещает неверную информацию отладки в ваш исполняемый файл.

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