日期:2014-05-16  浏览次数:20507 次

GDB调试的一些很有用经验

1.       gdb调试,如果有参数,可以在run命令后加,也可以使用set args ;如果是使用gdbserver+gdb的远程调试方式,参数可以在gdbserver后面加。

2.       gdbserver通过网络远程调试一个正在运行的进程:gdbserver IP:PORT –attach PID

3.       gdb显示:.dynamic section for “/lib/libthread.so.0” is not at the expected address(wrong library or version mismatch?),该错误是由于gdb使用了默认的host/lib库文件导致的,需要重新设定搜索目录:set solib-absolute-prifix /path/to/cross/compiler/lib, solib-absolute-prifix表示so库文件的绝对路径,此为优先搜索目录,此外也可以设定搜索路径:solib-search-path.(这个问题在嵌入式Linux远程调试中很常见)

4.       如果源文件不在当前目录,gdb调试时由于找不到源文件,只能显示汇编代码,这时可以使用-d指定源文件的目录,比如:gdb –d /home/dir app

5.       如果你的程序是多线程的话,你可以定义你的断点是否在所有的线程上,或是在某个特定的线程上:break <line> thread <threadno>,threadnogdb分配的线程ID,如果你不指定线程ID,默认你的断点设在所有的线程上面。