调试器
文章平均质量分 79
布衣僧
助人如助己,还人心愿,如还自己心愿。
展开
-
[Win32]一个调试器的实现(七)断点
来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/27/1997198.html作者:Zplutor's断点是最基本和最重要的调试技术之一,本文讲解了如何在调试器中实现断点功能。 什么是断点在进行调试的时候,只有被调试进程暂停执行时调试器才可以对它执行操作,例如观察内存内容等。如果被调试进程不停下转载 2015-12-03 08:49:47 · 615 阅读 · 0 评论 -
[Win32]一个调试器的实现(五)
来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/20/1989783.html作者:Zplutor's一个调试器应该可以跟踪被调试程序执行到了什么地方,显示下一条将要执行的语句,显示各个变量的值,设置断点,进行单步执行等等,这些功能都需要一个基础设施的支持,那就是调试符号。 什么是调试符号我们知道,在exe、dll转载 2015-12-03 08:40:23 · 525 阅读 · 0 评论 -
[Win32]一个调试器的实现(十)显示变量
来源网址:http://www.cnblogs.com/zplutor/archive/2011/04/22/2025190.html作者:Zplutor's上回介绍了微软的符号模型,有了这个基础知识,这回我们向MiniDebugger中添加两个新功能,分别是显示变量列表和以指定类型显示内存内容。显示变量列表用于列出当前函数内的局部变量或者全局变量;以指定类型显示内存内容用于读取指转载 2015-12-03 09:02:13 · 591 阅读 · 0 评论 -
[Win32]一个调试器的实现(九)符号模型
来源网址:http://www.cnblogs.com/zplutor/archive/2011/04/14/2015864.html作者:Zplutor's在接下来的文章中会讲解如何在调试器中显示局部变量和全局变量的类型和值。实现这个功能一定要有调试符号的支持,因为调试符号记录了每个变量的名称,类型,地址,长度等信息。这不是一件轻松的事情,因为你首先要对符号模型有一定的了解。所以转载 2015-12-03 08:56:54 · 650 阅读 · 0 评论 -
Win32]一个调试器的实现(六)显示源代码
来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/27/1997198.html作者:Zplutor's上一篇文章介绍了调试符号以及DbgHelp的加载和清理,这回我们使用它来实现一个显示源代码的功能。该功能的实际使用效果如下图所示:该功能不仅仅是显示源代码,还要显示每一行代码对应的地址。实现该功能大概需要进转载 2015-12-03 08:45:44 · 678 阅读 · 0 评论 -
[Win32]一个调试器的实现(八)单步执行
来源网址:http://www.cnblogs.com/zplutor/archive/2011/04/09/2010707.html作者:Zplutor's上回讲解了如何实现断点功能,这回讲解如何实现与断点紧密相关的单步执行功能。单步执行有三种类型:StepIn,StepOver和StepOut,它们的实现方式比较多样化,单独实现它们的话并不困难,但是将它们整合到一起就比转载 2015-12-03 08:51:20 · 623 阅读 · 0 评论 -
[Win32]一个调试器的实现(四)读取寄存器和内存
来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/13/1983010.html作者:Zplutor's在前几篇文章中,我实现的那个调试器只能被动接收调试事件并输出这些事件的信息。现在,我要将它修改成可以接收命令,并根据命令对被调试进程进行各种操作。首先从最基本的操作开始。 获取寄存器的值每个线程都有一个上下文环转载 2015-12-02 15:13:13 · 687 阅读 · 0 评论 -
[Win32]一个调试器的实现(三)异常
来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/08/1977702.html作者:Zplutor's这回接着处理上一篇文章留下的问题:如何处理EXCEPTION_DEBUG_EVENT这类调试事件。这类调试事件是调试器与被调试进程进行交互的最主要手段,在后面的文章中你会看到调试器如何使用它完成断点、单步执行等操作。所转载 2015-12-02 15:10:36 · 877 阅读 · 0 评论 -
[Win32]一个调试器的实现(一)调试事件与调试循环
来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/04/1971279.html作者:Zplutor's 前言程序员离不开调试器,它可以动态显示程序的执行过程,对于解决程序问题有极大的帮助。如果你和我一样对调试器的工作原理很感兴趣,那么这一系列文章很适合你,这些文章记录了我开发一个调试器雏形的过程,希望对你有帮助转载 2015-12-02 15:21:09 · 477 阅读 · 0 评论 -
[Win32]一个调试器的实现(二)调试事件的处理
来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/06/1972540.html作者:Zplutor's上一篇文章说到了调试循环的写法,这回讲一下调试器应该如何处理各种调试事件。 RIP_EVENT关于这种调试事件的文档资料非常少,即使提到也只是用“系统错误”或者“内部错误”一笔带过。既然如此,我们也不需要对转载 2015-12-02 15:06:18 · 507 阅读 · 0 评论 -
[Win32]一个调试器的实现(十一)显示函数调用栈
来源网址:http://www.cnblogs.com/zplutor/archive/2011/04/23/2025549.html作者:Zplutor's本文讲解如何在调试器中显示函数调用栈,如下图所示: 原理首先我们来看一下显示调用栈所依据的原理。每个线程都有一个栈结构,用来记录函数的调用过程,这个栈是由高地址向低地址增长的,即栈底的地址比栈顶的地址大转载 2015-12-03 09:05:19 · 569 阅读 · 0 评论