usar titulos tag significa que poner ejemplos cursiva como cabecera gdb dwarf

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

Opciones de depuración para GCC


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.