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

相关推荐
djjjx.3 分钟前
Linux进程篇(四):内核托底与生死交错 ,深度硬核剖析“僵尸”与“孤儿”进程
linux·运维·服务器
为思念酝酿的痛13 分钟前
Reactor反应堆模式
linux·服务器·网络
沫璃染墨15 分钟前
从零入门计算机网络系列(六):TCP套接字编程实战——从listen监听到客户端与服务器通信
linux·服务器·c++·tcp/ip·计算机网络·tcp
2401_8724187825 分钟前
把 Ubuntu 服务器变成 AI Agent 终端:用自然语言或语音管理 Linux,任何命令都先审批(附完整 Python 源码)
linux·服务器·ubuntu·agent
coderSong25681 小时前
【Ubuntu】ctrl+shift+f 繁体中文切换、VScode全集搜索
linux·vscode·ubuntu
AR-26710-1 小时前
Linux Day22——复习第三部分
linux·运维
迪康coolmu1 小时前
基于迪康端点安全一体化管理系统的公用终端上机与信创补丁实战
linux·运维·服务器·网络·安全·电脑
blueSatchel1 小时前
imx6ull显示控制器设备驱动解读
linux·嵌入式
水饺编程1 小时前
第2章:Linux 基础,关机命令
linux·c语言·汇编
JiMoKuangXiangQu1 小时前
Linux CFS 负载均衡:从 CPU 拓扑到任务迁移
linux·负载均衡