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文件产生的一致,调试才能正常

相关推荐
X1A0RAN3 分钟前
Linux nohup 命令完全指南
linux·运维·服务器
Shadow(⊙o⊙)12 分钟前
仿muduo实现高并发服务器——读写缓冲区Buffer.hpp
运维·服务器
C++ 老炮儿的技术栈22 分钟前
char 造成的数据溢出
linux·服务器·c语言·c++·算法·c
qetfw23 分钟前
Bash 内置与外部命令:type、command 与 builtin 验证
linux·开发语言·bash
虚无的纽扣24 分钟前
【Linux】信号(上):一个进程是怎么“被通知”的
linux·运维·驱动开发
是枚小菜鸡儿吖36 分钟前
听歌截图太普通?我把MusicCard部署到极空间,把歌曲做成随时可开的音乐海报页
服务器·人工智能·后端·ai·大模型
虎鲸不是鱼1 小时前
【虎鲸进化论 13】CI/CD:它在服务器上铺了条流水线
服务器·人工智能·ci/cd·大模型·自进化agent
大哥您好9 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
道满科技10 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
Gauss松鼠会11 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结