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

相关推荐
花姐夫Jun几秒前
在 CentOS 8 系统上安装 Jenkins 的全过程
linux·centos·jenkins
地球资源数据云9 分钟前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
是店小二呀17 分钟前
【Linux】Linux开发利器:make与Makefile自动化构建详解
linux·运维·自动化
BUG 4041 小时前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea1 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
深海的鲸同学 luvi1 小时前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos
dowhileprogramming2 小时前
Python 中的迭代器
linux·数据库·python
过过过呀Glik2 小时前
在 Ubuntu 服务器上添加和删除用户
linux·服务器·ubuntu
Tesseract_95274 小时前
ioctl回顾
linux
Java小白中的菜鸟4 小时前
centos7的磁盘扩容
linux·运维·服务器