调试器的原理

转载 2011年01月21日 23:32:00

调试器和被调试程序是通过中断系统来实现的.不过在Windows下,这些工作都不需要你来做了.Windows封装了一套完整的调试接口.
你只要建立一个调试器,用它打开(或建立)一个被调试进程,然后根据调试的目标中所包含的调试信息找出源代码与机器码之间的对映关系.在你要中断的地方加 一个int3指令(并记录下原来的值),这个指令的代码是0xcc,当目标执行到int3时,它就产生了一个中断,这时目标程序停止运行,并将它的运行状 态保存下来,再由操作系统接管.在Windows下,你的调试器就会接收到一个中断消息,并得到目标程序运行的状态(所有的寄存器),你在调试器中把状态 中的IP寄存器的值减1,然后把那个位置的int3指令还原成它原来的值,再返回中断,这时候目标程序就可以继续运行下去.这样就实现了一个 "断点 ".当然,你也可以在目标进行中断的时候修改它的内存空间或着寄存器,这样就可以实现动态修改变量的值.
如果你把跟踪标志设为1,这时候你的系统就进入跟踪状态,每执行一条机器指令就会产生一个中断,当进行中断时,系统会自己保存当时的运行状态,然后全速运 行你的中断代码,在Windows下,你的调试器同样会收到相应的消息,这时你只要对目标做相应的处理就可以实现对目标的跟踪.

相关文章推荐

调试器工作原理之三——调试信息

试器工作原理探究系列的第三篇,在阅读前请先确保已经读过本系列的第一和第二篇。 本篇主要内容 在本文中我将向大家解释关于调试器是如何在机器码中寻找C函数以及变量的,以及调试器使用了何种数据能够在C源...

调试器工作原理(3):调试信息

本篇主要内容 在本文中我将向大家解释关于调试器是如何在机器码中寻找C函数以及变量的,以及调试器使用了何种数据能够在C源代码的行号和机器码中来回映射。 调试信息 现代的编译器在转换高级语言程序代码...

调试器工作原理(2):实现断点

本文的主要内容 这里我将说明调试器中的断点机制是如何实现的。断点机制是调试器的两大主要支柱之一 ——另一个是在被调试进程的内存空间中查看变量的值。我们已经在第一篇文章中稍微涉及到了一些监视被调试进程...

调试器工作原理(1):基础篇

本文是一系列探究调试器工作原理的文章的第一篇。我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起。 关于本文 我打算在这篇文章中介绍关于Linux下的调试器实现的...

调试器工作原理(1):基础篇

转载自http://blog.jobbole.com/23463/ 本文是一系列探究调试器工作原理的文章的第一篇。我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从...

windows调试器的原理

  • 2015-08-06 15:26
  • 83KB
  • 下载

(转)调试器工作原理(3):调试信息

本文是调试器工作原理探究系列的第三篇,在阅读前请先确保已经读过本系列的第一和第二篇。 本篇主要内容 在本文中我将向大家解释关于调试器是如何在机器码中寻找C函数以及变量的,以及调试器使用了何种数据能...

(转)调试器工作原理(1):基础篇

本文是一系列探究调试器工作原理的文章的第一篇。我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起。 关于本文 我打算在这篇文章中介绍关于Linux下的调试器实现的...

调试器的工作原理

调试器的工作原理《黑客调试技术揭秘》   理解调试器的工作原理   对调试器的工作原理毫无所知就贸然地使用它是很愚蠢的。所以,在本节中,我将介绍调试器...

Linux调试器工作原理之三——调试信息

本篇主要内容 在本文中我将向大家解释关于调试器是如何在机器码中寻找C函数以及变量的,以及调试器使用了何种数据能够在C源代码的行号和机器码中来回映射。 调试信息 现代的编译器在转换高级...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)