gdb
gdb(GNU symbolic debugge)是 Linux 下常用的程序调试器。要想使用gdb需要在编译选项中加入-g选项,如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址,无法进行调试。
gdb功能
gdb主要帮助我们完成以下功能:
- 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
- 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
- 当程序被停住时,可以检查此时你的程序中所发生的事。
- 你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。
gdb命令
启用gdb,输入:help
可以看到gdb的命令分为以下几大类:
running(运行)
run/r
:开始调试程序。使用run程序将从头开始连续执行,直到断点或程序结束。如果在断点处停下再次使用run,可以确认程序重新启动。还可以在run后面直接跟传入的参数,在main函数中可以通过argv参数访问传入的值。start
:运行调试程序,直到主程序开始。再次使用start可以确认程序重新启动。注意:使用start程序将停在开始处,相当于main函数左括号处。continue/c
:继续执行调试程序。当程序停在断点处,使用continue程序将连续执行,直到下一断点或程序结束。next/n
:单步执行。注意:当发生函数调用时,该指令不会进入函数内部单步执行,将直接将调用函数执行完毕。step/s
:单步执行。如果函数没有调用其它函数则与next没有区别,如果发生函数调用,会进入到调用函数内。finish/fi
:结束当前调用函数,回到上一层调用函数处。until/u
:在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。
breakpoints(断点)
-
break/b
:在指定位置设置断点。位置的确定可以时文件名,函数名&#x