• 10GDB修改寄存器


    1. 修改寄存器,跳过某些行代码

     1)代码行10,要打断点的代码

    2)代码行12,在行10下一步后,希望进入代码行12(跳过执行代码行11)
    3)期望代码行13输出0(因为代码行10没有执行,所以c的值仍然为原始值)

    4)在行10打断点
    5)在程序run起来后,程序停在行10,查看行10的地址:i line 10
    6)可以看到行10(待执行的代码行)的地址:0x4008a4
    7)查看rip值(总是指向待执行的代码行):i r rip。
    8)查看到的结果为 0x4008a4,说明rip确实指向了待执行的代码行10
    9)查看代码行11地址:i line 11,查看到的结果为:0x4008af
    10)修改rip的值,使之指向待执行代码行11:p $rip=0x4008af
    11)查看rip的值:i r rip
    12)查看到的结果为:0x4008af
    13)执行下一步.
    14)发现执行了代码行11,输出结果为123,停止在代码行12。
    15)发现最后c的值并没有改变(因为跳过了代码行10的执行),还是初始值0。

    2. 修改寄存器,重复执行某段代码

     1)第一次要设置断点的位置,代码行14

    2)当程序运行到1(代码行14)时候,修改rip要指向的位置,代码行10
    3)断点到代码行14
    4)运行后,程序停在代码行14
    5)修改a,b的值分别为100,200
    6)查看行10的地址:0x4008a4
    7)修改rip的指向地址:p $rip=0x4008a4,指向代码行10
    8)查看rip的指向地址:结果为0x4008a4
    9)下一步后,发现代码指向了行11,说明代码行10被执行,发现a, b, c的值分别发生了变动:100,200,300

    另外:上面介绍的rip也可以写成pc,它们是等价的

  • 相关阅读:
    Centos7下rc.local文件开机不执行…
    Centos7添加密码安全策略
    Java8 时间日期类操作
    XML配置spring session jdbc实现session共享
    Spring Boot 2.x以后static下面的静态资源被拦截
    外观模式
    组合设计模式
    Java线程池源码解析
    观察者模式
    Java使用POI解析Excel表格
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/15817917.html
Copyright © 2020-2023  润新知