gdb修改寄存器值进行调试

本文介绍了如何利用GDB调试工具修改寄存器值,以测试函数返回值对程序流程的影响。在无法直接修改库函数返回值的情况下,通过设置$eax寄存器的值,模拟函数返回不同的结果,从而实现对程序逻辑的测试。
摘要由CSDN通过智能技术生成

    昨天在测试同事的一段代码时,返回值没有保存到变量中,而是直接进行判断的,类似这样:

 

    由于check_state()是来自另一个.a文件的函数,所以无法改变它的返回值,每次它都返回非0值(导致func1()每次都返回-1。),但是我想测试func1()返回0时代码的执行情况。同事在此处并没有用一个变量来存储这个返回值,所以无法通过设置变量的值达到效果。

    每个C语言的函数,都会通过寄存器返回值,所以我们可以通过修改func1()中寄存器的值,达到我们的测试目的。


    写一个简单的测试代码来说明用法(检测输入参数是否大于10):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值