Dwarf Error: wrong version in compilation unit header (is 4, should be 2)

Dror Harari picture Dror Harari · Jul 26, 2012 · Viewed 30.1k times · Source

A shared object was built on RedHat Linux and while all the code was compiled with debug, the debugger (gdb) refused to load the symbols and issued an error as in:

...
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]

With this error, I could not get break points to trigger in any function nor see proper stack trace. I recompiled the entire project but nothing helped. I do know that some time in the past there was no problem in debugging that module.

What is causing this problem?

Answer

Marco picture Marco · Sep 17, 2013

The problem is that your version of gdb doesn't support the DWARF version used in one of your binaries.

The solution: Update gdb or compile your files using another debug format (DWARF2 works on gdb 6).

I have recently had this problem with freeBSD and nasm, nasm compiling binaries with DWARF3 and the gdb that ships with freeBSD 9.1 doesn't accept it.

I hope this answer helps anyone having a similar problem :P

Debug options for GCC