Как я могу узнать, какой тип отладочной информации находится в объектном файле ELF? - PullRequest
15 голосов
/ 17 августа 2011

У меня есть объектный файл ELF.Я хочу знать, какой тип отладочной информации он содержит.Он был скомпилирован с помощью компилятора Diab (источник C) для архитектуры PPC.Я почти уверен, что он был построен с отладочными символами.

Я попытался извлечь информацию об отладке с помощью dwarfdump, но у меня ничего не получается, поэтому я полагаю, что информация об отладке не относится к типу DWARF.

$ dwarfdump file.elf
No DWARF information present in file.elf

Использование objdump для отображения информации об отладкеприходит пустой

$ objdump -g file.elf 
file.elf:     file format elf32-powerpc

Может ли быть, что этот файл ELF не содержит отладочной информации, даже если в файле ELF есть разделы с именами .debug_sfnames, .debug_srcinfo и .debug.srcinfo?Или информация об отладке хранится в формате, который objdump не может обработать?

Ответы [ 3 ]

5 голосов
/ 31 мая 2014

Не похоже, чтобы кто-либо когда-либо отвечал на ваш реальный вопрос, а именно: как программно определить вид символов отладки, присутствующих в данном двоичном файле ELF.Насколько я могу судить, это не дано явно в ELF;однако это может быть связано с наличием определенных имен разделов в файле ELF.Например: раздел с именем «.debug_info» подразумевает DWARF2 или лучше, тогда как «.stab» подразумевает удары.Быстрый поиск ваших ".debug_sfnames" предлагает DWARF1.(Я не знаю, почему ваш dwarfdump не идентифицировал это ... возможно, ваш dwarfdump предназначен для более новых DWARF-файлов и имеет обратную совместимость?)

5 голосов
/ 18 октября 2011

Вы, вероятно, должны использовать нм

Утилита nm должна отображать символическую информацию, появляющуюся в объектный файл, исполняемый файл или библиотека объектных файлов с именем file. Если символическая информация не доступна для допустимого входного файла, нм утилита должна сообщить об этом факте, но не считать это ошибкой состояние.

В качестве альтернативы вы можете использовать такие инструменты, как ldd, чтобы увидеть, какие библиотеки требуются для двоичного файла.

4 голосов
/ 16 декабря 2014

В GNU / Linux:

$ readelf --debug-dump=info /absolute/path/to/file | grep "Version" | uniq

Возвращает версию символов DWARF, используемую в двоичном файле.

...