GDB调试技巧
启动gdb调试
方法一:
gdb exe core
方法二:
gdb -c core
(gdb) file exe
加载符号文件
-
在启动GDB时,使用-s选项指定符号文件的路径,例如:
gdb -s /path/to/symbol/file executable
-
在GDB中使用symbol-file命令手动加载符号文件,例如:
(gdb) symbol-file /path/to/symbol/file
GDB调试时设置动态库搜索目录
当gdb调试时使用bt查看堆栈信息,都显示???时,通常时由于库搜索路径错误导致的,可在启动调试后使用set sysroot、set solib-absolute-prefix、set solib-search-path来指定库搜索路径。
-
set sysroot 与 set solib-absolute-prefix 是同一条命令,实际上,set sysroot是set solib-absolute-prefix 的别名
-
set solib-search-path设置动态库的搜索路径,该命令可设置多个搜索路径,路径之间使用":"隔开(在linux中为冒号,DOS和Win32中为分号)。
set solib-absolute-prefix 与 set solib-search-path 的区别
总体上来说solib-absolute-prefix设置库的绝对路径前缀,只对绝对路径有效;而solib-search-path设置库的搜索路径,对绝对路径和相对路径均起作用。(编译器自动链接的so库多采用绝对路径)。 -
查看动态库的加载路径可使用下列命令
(gdb) info sharedlibrary
-
注意调试时找到的动态库要跟core文件产生的一致,调试才能正常