C программа, отлаживающая в gdb проблеме

Я пытаюсь запустить свое приложение на 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) . 
1
задан unwind 4 May 2010 в 12:08
поделиться

2 ответа

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

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

1
ответ дан 3 September 2019 в 00:51
поделиться

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

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

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

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

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

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

1
ответ дан 3 September 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: