美文网首页
软件纵横谈学习笔记(2)断点

软件纵横谈学习笔记(2)断点

作者: bluewind1230 | 来源:发表于2018-02-01 11:20 被阅读0次

调试程序时,以在可能有问题的地方插入一条INT3指令,使得CPU在执行到这一点的时候停下来;
实验:


image.png
image.png

在调试器中设置断点:

  • 在调试器中对代码的某一行设置断点时,调试器会把这里本来指令的第一个字节保存起来,然后写入一条int 3指令,int 3指令的机器码为11001100(0xCC),仅仅一个字节,所以设置和取消断点时也只需要保存和恢复一个字节.
    将断点位置对应的指令的第一个字节先保存起来,再替换为0xCC,这个过程就是落实断点.

当CPU执行到 INT3指令时,由于INT 3指令的目的就是中断到调试器,因此,CPU执行这条指令的过程也就是产生断点异常, 并转去执行异常处理例程的过程.在跳转处理例程之前,CPU会保存当前的执行上下文,包括各种寄存器.

在保护模式下,INT3指令的执行过程虽然有所不同,但是原理一样,也是先保存好寄存器,便跳转去执行异常处理例程.

相关文章

  • 软件纵横谈学习笔记(2)断点

    调试程序时,以在可能有问题的地方插入一条INT3指令,使得CPU在执行到这一点的时候停下来;实验: 在调试器中设置...

  • 软件纵横谈学习笔记(1)软件断点

    int 3指令: 机器码为1个字节,即0xcc 没有数量限制 局限:属于代码类断点,可以让CPU执行到代码段内的某...

  • 软件纵横谈笔记(3)硬件断点与单步

    DR7对设置的硬件断点进行描述 DR0-DR3存放断点位置在设置(硬件)断点的时候,调试器帮助我们把我们要监视的地...

  • GDB学习笔记(1)

    最近通过《软件调试的艺术》学习GDB,书刚读了大概三分之一,这里先记一些笔记:-) 缩写 基本操作 断点 b po...

  • 学习小组Day3笔记——冬梅

    生信星球学习笔记-Day2 今天学习了如何在linux环境下安装软件——用到了conda,安装软件以fastqc为...

  • LLDB调试(二)

    前言: lldb断点类型: 软件断点:正在调试的二进制文件中的断点,在调试器应使用一种迫使 CPU发出软件中断(又...

  • SKETCHUP建模学习笔记之二

    【链接】 1、《软件插件介绍之三十 :Sketchup》 2、《Thearender2渲染器学习笔记之十》 3、《...

  • 学习小组Day3笔记-Freeman

    学习笔记 学习笔记用了幕布做的,放上图片。 学习小结 今天学习了Linux环境下的软件安装,学习了软件安装的基本过...

  • SKETCHUP建模学习笔记之一

    【前言】 以前,在《软件插件介绍之三十 :Sketchup》、《Thearender2渲染器学习笔记之十》中...

  • iOS开发中的断点调试

    1.普通断点 2.全局断点 3.条件断点 3.1 指定断点条件 3.2 断点触发前忽略指定次数 3.3 断点触发时...

网友评论

      本文标题:软件纵横谈学习笔记(2)断点

      本文链接:https://www.haomeiwen.com/subject/uxqdzxtx.html