本文已参与 [新人创作礼] 活动,一起开启掘金创作之路。
GDB安装
-
在系统上安装gdb(以Ubuntu为例)
sudo apt install gdb
-
离线安装gdb deb包
之后通过dpkg -i命令进行安装(注意使用sudo或者root)。
-
下载源码手动编译安装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处理过的。