gdb - titulos - Error enano: versión incorrecta en el encabezado de la unidad de compilación(es 4, debería ser 2)
tags h1 y cursiva (3)
Se construyó un objeto compartido en RedHat Linux y aunque todo el código se compiló con la depuración, el depurador (gdb) se negó a cargar los símbolos y emitió un error como en:
...
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]
Con este error, no pude obtener puntos de interrupción para activar ninguna función ni ver el seguimiento de pila adecuado. Recopilé todo el proyecto pero nada ayudó. Sé que en algún momento en el pasado no hubo ningún problema en la depuración de ese módulo.
que esta causando este problema?
A medida que sucede, el módulo que no pudo depurar se construyó principalmente a partir de fuentes, excepto por un pequeño archivo de objeto ''externo'', someextcode.o, que fue proporcionado por un tercero.
Al investigar el problema, se encontró que someextcode.c se compiló con el indicador -g3 que, aparentemente, coloca la versión DWARF de 4 en el encabezado de la unidad de compilación. Cambiar eso a -g resolvió el problema.
Desafortunadamente, parece que un problema con un solo módulo puede romper la capacidad de depuración de un objeto compartido completo (.so) sin dar una indicación clara de la raíz del problema.
El problema es que su versión de gdb
no es compatible con la versión DWARF
utilizada en uno de sus binarios.
La solución: actualice gdb
o compile sus archivos utilizando otro formato de depuración ( DWARF2
funciona en gdb
6).
Recientemente he tenido este problema con freeBSD
y nasm
, nasm
compilando archivos binarios con DWARF3
y el gdb
que viene con freeBSD 9.1
no lo acepta.
Espero que esta respuesta ayude a cualquiera que tenga un problema similar: P
Mi problema se resolvió eligiendo la versión correcta de gdb para la depuración. Antes, estaba usando gdb 7.0 ... y cuando comencé a usar gdb versión 7.10, pude depurar mi aplicación.