Ошибка гнома: неправильная версия в заголовке блока компиляции (4, должно быть 2)

18

Общий ресурс был создан на RedHat Linux, и, хотя весь код был скомпилирован с помощью отладки, отладчик (gdb) отказался загружать символы и выдал ошибку, как в:

...
GNU gdb   Fedora (6.8-37.el5) 
...
This GDB was configured as "x86_64-redhat-linux-gnu"...
Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module libgrokf.so]

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

Что вызывает эту проблему?

    
задан Dror Harari 26.07.2012 в 16:02
источник

3 ответа

14

Как это бывает, модуль, который не мог отлаживать, в основном строился из источников, за исключением одного небольшого «внешнего» объектного файла someextcode.o, который был предоставлен третьей стороной.

При исследовании проблемы было обнаружено, что файл someextcode.c был скомпилирован с флагом -g3, который, по-видимому, помещает DWARF версию 4 в заголовок блока компиляции. Изменение этого параметра на -g разрешило проблему.

К сожалению, проблема в том, что один модуль может нарушить способность отладки всего общего объекта (.so), не давая четкого указания на корень проблемы.

    
ответ дан Dror Harari 26.07.2012 в 16:02
источник
14

Проблема в том, что ваша версия GDB не поддерживает версию DWARF, используемую в одном из ваших двоичных файлов.

Решение: обновите GDB или скомпилируйте свои файлы с использованием другого формата отладки (DWARF2 работает с GDB 6).

У меня недавно была эта проблема с freeBSD и nasm, nasm компиляции двоичных файлов с dwarf3 и gdb, который поставляется с FreeBSD 9.1, не принимает его.

Я надеюсь, что этот ответ поможет любому, у кого есть аналогичная проблема: P

Параметры отладки для GCC

    
ответ дан Marco 17.09.2013 в 01:12
источник
  • Некоторое программное обеспечение привносит модифицированную версию gdb, а после добавления в PATH env ваш gdb по умолчанию для системы скрыт. –  hailinzeng 23.11.2015 в 10:12
0

Моя проблема решена путем выбора правильной версии gdb для отладки. Раньше я использовал gdb 7.0 ... и когда я начал использовать gdb версию 7.10, я смог отладить мое приложение.

    
ответ дан Kapil Satija 16.02.2016 в 12:22
источник