GDB反向调试命令介绍和操作演示

反向调试命令汇总

命令

作用

record

开启记录模式

record stop

停止记录

bookmark

设置执行标签

info bookmarks

查看标签

goto-bookmark num

跳到num编号的标签

reverse-step (rs)

反向执行到上一行代码,遇函数则跳入

reverse-stepi (rsi)

反向执行到上一行汇编,遇函数则跳入

reverse-next (rn)

反向执行到上一行代码,遇函数则跳过

reverse-nexti (rni)

反向执行到上一行汇编,遇函数则跳过

reverse-continue (rc)

反向执行到上个断点

reverse-finish

反向执行到函数调用的位置

set exec-direction reverse

设置程序调试方向为反向,此时s/si/n/ni/continue/finish都为反向

set exec-direction forward

设置程序调试方向为正向

测试用例

/*================================================================

* Author: LiuHanxu

* Date: 2022-12-25

* Description: This test used for reverse debugging

================================================================*/

#include

int fun(int n) {

int sum = 0;

for (int i=0; i<=n; i++)

sum += i;

return sum;

}

int main() {

int x = 10, y = 0;

y = fun(x);

printf("y = %d\n", y);

return 0;

}

开启记录模式record

程序开始调试后,输入record开启记录和回放模式,生成程序执行日志,随后即可基于日志进行反向调试,任意切换正向反向。

record stop命令停止记录模式,然后自动删除执行日志。

设置执行标签bookmark

开启记录和回放模式后,便会生成程序执行日志,可以根据调试需求在关键位置设置标签,方便后面一键反向到历史标签位置。bookmark设置执行标签;info bookmarks查看标签,第一个是标签编号,第二个是指令地址,第三个是执行日志中的排序;goto-bookmark num跳到num编号的标签。

反向单步执行rn/rni/rs/rsi

reverse-next (rn)就是next(n)单步执行的反向命令,其他反向命令,以此类推。

反向执行到上个断点rc

reverse-continue (rc)命令反向执行到程序记录的上个断点位置。

反向执行到函数调用处reverse-finish

设置程序调试方向set exec-direction reverse

默认程序调试方向为forward,当set exec-direction reverse设置程序调试方向为反向后,此时s/si/n/ni/continue/finish都直接变为反向命令。

上一篇: 《我的世界金锭获取方法大全》 打造财富王国的必备技能
下一篇: 拉卡拉收款码怎么办理

相关推荐

如何设置QQ的主面板
朝闻道,夕死可矣
有哪些 7 庞巴迪全球家族的飞机?
如何取消苹果手机开机密码
广告营销包括哪些内容和方法
微波炉磁控管