Как добавить символы отладки для GCC 8.1.0?

Я обновил используемую мной версию GCC с 4.2.1 до 8.1.0. (Это единственное, что я изменил)

Проблема в том, что после того, как я это сделал, символы отладки исчезли.

Я использую GDB только с опцией "-g".

В gcc v8.1.0 символы отладки при запуске gdb отсутствуют:

(gdb) br test
Breakpoint 1 at 0xa5fa053
(gdb) bt
0  0x09fa2303 in test_func()
1  0x097cecc7 in test_func_2 ()
2  0x097cf314 in test_func_3 ()

с v4.2.1 было так:

(gdb) br test_func
Breakpoint 1 at 0xaa2fc7a: file /projects/gabriela/test/test.c, line 3
(gdb) r
Breakpoint 1, test_func(unit=0, flags=0, test1=0xffff95e0, test2=0xffff9b9c) at /projects/gabriela/test/test.c, line 3
(gdb) bt
0  test_func (unit=0, flags=0, test1=0xffff95e0, test2=0xffff9b9c) at /projects/gabriela/test/test.c, line 3
1  0x099ad349 in test_func_2 (unit=0, flags=0, test1=0x0, test2=0x0) at /projects/gabriela/test/test.c:10
2  0x099ada04 in test_func_3 (unit=0, flags=0, test1=0x0) at /projects/gabriela/test/test.c:20

Как сделать символы dbg в gcc8.1.0 похожими на gcc4.2.1?


person Gabriela Hristowa    schedule 03.09.2019    source источник


Ответы (1)


Между версиями 4.2.1 и 8.1.0 в gcc было много изменений. Одно из изменений, произошедших в gcc 4.8, заключается в том, что он по умолчанию начал выдавать отладочную информацию DWARF4. Раньше это был DWARF2. Скорее всего, ваш gdb не понимает формат DWARF4. Единственное, что вы можете сделать, - это попытаться создать DWARF2 с параметром -gdwarf-2 gcc. См. Примечания к выпуску GCC 4.8:

DWARF4 теперь используется по умолчанию при создании отладочной информации DWARF. Когда -g используется на платформе, которая использует отладочную информацию DWARF, GCC теперь по умолчанию будет -gdwarf-4 -fno-debug-types-section. GDB 7.5, Valgrind 3.8.0 и elfutils 0.154 потребители отладочной информации по умолчанию поддерживают DWARF4. До GCC 4.8 по умолчанию использовалась версия DWARF2. Чтобы GCC 4.8 генерировал старую версию DWARF, используйте -g вместе с -gdwarf-2 или -gdwarf-3

person ks1322    schedule 03.09.2019