GDB 反向调试(Reverse Debugging)

  • Post author:
  • Post category:其他


使用调试器时最常用的功能就是step, next, continue,这几个调试命令都是“往下执行”的, 但是很多时候会有这种需求:你在调试的过程中多跳过了几步而错过中间过程,这时候不得不重头调试一遍,非常麻烦。而GDB从7.0版本开始支持反向调试功能,也就是允许你倒退着运行程序,或者说撤销程序执行的步骤从而会到以前的状态。

直观地来看,加入你正在使用GDB7.0以上版本的调试器并且运行在支持反向调试的平台,你就可以用以下几条命令来调试程序:


reverse-continue

反向运行程序知道遇到一个能使程序中断的事件(比如断点,观察点,异常)。


reverse-step

反向运行程序到上一次被执行的源代码行。


reverse-stepi

反向运行程序到上一条机器指令


reverse-next

反向运行到上一次被执行的源代码行,但是不进入函数。


reverse-nexti

反向运行到上一条机器指令,除非这条指令用来返回一个函数调用、整个函数将会被反向执行。


reverse-finish

反向运行程序回到调用当前函数的地方。


set exec-direction [forward | reverse]

设置程序运行方向,可以用平常的命令step和continue等来执行反向的调试命令。



版权声明:本文为CherylNatsu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。