gdb是GNU开源组织发布的UNIX/LINUX操作系统下基于命令行的强大程序调试工具。当然gdb一般是用来调试c/cpp程序的。一般来说,GDB主要帮助您完成以下四个功能:启动您的程序,并根据您的自定义要求随意运行程序。允许正在调试的程序在您指定的断点处停止。(断点可以是条件表达式)当程序停止时,你可以查看当时你的程序发生了什么。动态改变程序的执行环境。gdb非常强大,所以命令很多,但并不是所有的都可用。日常使用,知道一些常用的就够了。准备工作代码必须用-g选项编译,生成的可执行文件可以用gdb在源代码级别进行调试。例如,gcc-gmain.c-omain。-g选项的作用是在可执行文件中加入源代码信息,如可执行文件中的哪条机器指令对应源代码的那一行,但它不会将整个源文件嵌入到可执行文件中,所以在调试的时候一定要保证gdb能够找到源文件。参数说明list/llistlinenum,打印出以linenum为中心的源代码上下行。listfunc,打印以定义函数func的行为为中心的代码的上下行。list,在当前行之后打印源程序,一次打印10行。run/r运行程序直到它在第一个断点处停止。break/bbreaklinenum,在linenum处设置断点。breakfunc,在func函数入口处设置断点。ddbreakpointnum,删除第num个断点。step/s执行一行源程序代码,如果这行代码中有函数调用,则进入函数。next/n与step相反,n表示不进入函数内容继续执行。print/pprint变量名,打印出变量值。backtrace/bt查看各级函数调用和参数。frame/fframe帧号,选择栈帧。setsetvarvariable=value,修改一个变量的值。或者使用打印命令来达到目的。finish让程序运行直到它从当前函数返回。info/iinfobreak,查看所有已经设置的断点信息。infolocals,查看当前栈帧中局部变量的值。shell在不离开gdb的情况下执行UNIXshell命令help/h获取帮助信息。quit/q退出gdb。注意:以上命令几乎都可以使用首字母来缩写长命令。调试由gdb可执行文件生成的核心转储文件,例如gdbtestcore.3533。参考Linuxgdbdebuggerusage综合分析使用gdbdebugger完整教程
