GDB 调试技巧

GDB调试技巧

启动gdb调试

方法一:

复制代码
gdb exe core

方法二:

复制代码
gdb -c core
(gdb) file exe

加载符号文件

  1. 在启动GDB时,使用-s选项指定符号文件的路径,例如:

    复制代码
    gdb -s /path/to/symbol/file executable
  2. 在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文件产生的一致,调试才能正常

相关推荐
报错小能手11 小时前
linux学习笔记(35)C语言连接mysql
linux·笔记·学习
心一信息11 小时前
grafana及zabbix在linux上的部署
linux·zabbix·grafana
deng-c-f11 小时前
Linux C/C++ 学习日记(27):KCP协议(三):源码分析与使用示例
linux·服务器·网络·c++·网络编程·kcp
wanhengidc11 小时前
如何使用云手机进行游戏挂机?
运维·服务器·游戏·智能手机·云计算
汪汪大队u12 小时前
为什么 filter-policy 仅对 ASBR 的出方向生效,且即使在该生效场景下,被过滤的路由在协议内部(如协议数据库)依然存在,没有被彻底移除?
服务器·前端·网络
kyle~12 小时前
设计模式---观察者模式
服务器·观察者模式·设计模式
wangjialelele12 小时前
端口号、常见协议和套接字
linux·运维·服务器·c语言·网络
蜜蜜不吃糖12 小时前
ESXI主机重置带外密码
linux·运维·服务器
王道长服务器 | 亚马逊云12 小时前
AWS CloudTrail:让每一次操作都“有迹可循”
服务器·网络·云计算·智能路由器·aws
ZhiqianXia12 小时前
Linux SysRq
linux