试着调试pgAdmin3,却发现有一些问题。
如果按下面步骤编译和调试pgAdmin3,会报错:
./configure --enable-debug
make
gdb pgadmin/pgadmin3
错误信息为:
Dwarf Error: wrong version in compilation unit header (is 0, should be 2,3,4)
上网搜了一下,不是GDB的问题,问题出在GCC的编译选项上。
查了一下gcc手册,发现,如果编译时只使用参数-g,那么默认使用本地的调试信息格式,默认等级是2.
现在的错误说明,GDB期待Dwarf调试信息格式,但gcc -g默认给出的并非Dwarf格式的调试信息。
那么我们明确告诉gcc使用Dwarf格式调试信息就行了,DWARF有4个版本,新版的GDB已经支持到DWARF4,建议使用最新的。
打开pgadmin3下的configure文件,将下面的-g改为-gdwarf-4:
2583 if test "$GCC" = yes; then 2584 CFLAGS="-gdwarf-4 -O2" 2585 else 2586 CFLAGS="-gdwarf-4"
3264 if test "$GXX" = yes; then 3265 CXXFLAGS="-gdwarf-4 -O2" 3266 else 3267 CXXFLAGS="-gdwarf-4" 3268 fi
重新congfigure和make后,就可以顺利gdb调试了。