Linux下的的GDB调试技巧二 —— 基本功能
迪丽瓦拉
2024-04-10 21:34:26
0

GDB安装

  • 在系统上安装gdb(以Ubuntu为例)
sudo apt install gdb
  • 离线安装gdb deb包
https://pkgs.org/download/gdb

之后通过dpkg -i命令进行安装(注意使用sudo或者root)。 

  • 下载源码手动编译安装gdb
http://ftp.gnu.org/gnu/gdb/

之后根据指导进行configure和make。

GDB常用功能概览

GDB常用功能如下表所示:

支持的功能

描述

启动调试与执行逐过程、逐语句执行等
断点管理设置断点、查看断点等
查看修改、自动显示、动态打印变量的值在调试状态下查看、修改及内存数据等操作
显示源代码 显示源代码
查看调用栈查看堆栈信息
线程管理调试多线程程序,查看线程信息
其它

包括搜索源代码、查看变量类型、窗口管理、调用shell命令、gdb自定义宏的使用、信号(signals)、commands等命令

可被GDB调试的程序

GDB可以调试的程序包括以下几类:

1. 自己编译的程序

  • cmake带“-DCMAKE_BUILD_TYPE=Debug”参数的程序。
  • makefile中带“-g”参数的,并添加-O0选项的程序。

注:

-O0不进行优化处理。

-O或-O1优化生成代码。

-O2进一步优化。

-O3比-O2更进一步优化,包括inline函数。

2. 非自己编译的程序

  • 使用readelf -S 程序名称 | grep debug命令,能够输出调试信息的程序;如果没有任何的debug信息,则不能被调试。
  • 使用file命令查看strip的情况,没有显示stripped资阳的程序;如果最后显示stripped,则不能被调试。

注:

(1)gdb如果调试不可被调试的程序时,会报"Reading symbols from XXX...(no debugging symbols found)...done"错误。

(2)一般deb打包之后的可执行程序都是被strip处理过的。

相关内容