gdb调试详解
GDB(GNU Debugger)是一款功能强大的调试工具,广泛应用于Linux平台。通过GDB,可以轻松地调试程序,检查程序崩溃后的核心转储文件(Core Dump),从而帮助开发者快速定位和解决问题。
GDB基础命令
在使用GDB之前,需要了解一些基本命令。这些命令可以帮助开发者快速启动GDB,设置断点、检查变量值、追踪程序执行过程等。
* `b [linenum/func]`: 以行号或函数名为标识设置断点
* `l`: 显示源代码
* `l [filename] : [linenum/func]`: 列出某文件某行的附近代码或函数
* `bt`: 打印堆栈信息
* `c`: 类似使用VS调试时的F5键
* `n`: 单步调试
* `info break`: 显示断点信息
* `delete [num]`: 删除断点,num为info break断点信息中的断点编号
* `disable [num]`: 暂时屏蔽断点,num同上
* `enable [num]`: 恢复断点,num同上
* `display [variant]`: 当触发断点时,显示变量variant的值
* `whatis [variant]`: 显示变量的类型,可以用ptype命令代替
GDB高级命令
除了基本命令外,GDB还提供了一些高级命令,可以帮助开发者更好地调试程序。
* `finish`: 跳出函数执行体,相当于VS的SHIFT+F11
* `u`: 跳出循环体
* `step`: 相当于VS的F11键
* `p [variant]`: 打印变量的值
* `info locals`: 显示当前所有局部变量的值
* `layout src`: 显示源代码窗口,调试时会有更新问题,可以用CTRL+l更新
* `b [linenum/func] if [condition]`: 可以在某条件成立的时候,在某处下断点
* `watch [variant]`: 类似VS的监视变量,当触发断点时,会打印variant的值
* `file [程序名]`: 当以gdb命令直接进入调试的时候,可以使用该命令加载所要调试的程序
调试Core Dump文件
Core Dump文件是程序崩溃后生成的文件,包含程序崩溃时的堆栈信息和其他信息。要调试Core Dump文件,需要使用GDB命令。
* `gdb ./test core`: 加载Core Dump文件
* `where`: 显示引起程序崩溃的位置
* `ba`: 打印堆栈信息
调试Core Dump文件的准备
要生成Core Dump文件,需要在程序崩溃后执行`ulimit –c unlimited`命令,设置Core Dump文件的大小。同时,需要在编译程序时添加`-g`选项,并把优化选项等级设为最低(-O0,默认为-O2)。
通过GDB和Core Dump文件,可以快速地定位和解决程序崩溃的问题,从而提高开发效率和程序质量。
- 1
- 2
前往页