Я пытаюсь получить информацию DWARF из файла C ++, используя dwarfdump. Файл C ++ очень прост —
int foo();
Я компилирую это, делая g++ -g -c test.cpp
, Я тогда делаю dwarfdump test.o
, но по какой-то причине я получаю
----------------------------------------------------------------------
File: test.o (x86_64)
----------------------------------------------------------------------
.debug_info contents:
< EMPTY >
Почему это? И как я могу получить информацию об отладочном дварфе?
Я понял, что случилось. Отладочная информация не была сгенерирована. Это потому, что оптимизатор понимает, что int foo (); никогда не вызывается и не имеет объявления, и поэтому не нуждается в отладочной информации. Изменение функции на
int foo(){
int x=5;
}
достаточно для генерации отладочной информации.
Других решений пока нет …