2.3 调试事件

调试器在调试程序的时候会一直循环等待,直到检测到一个调试事件的发生。当调试事 件发生的时候,就会调用一个与之对应的事件处理函数。

处理函数被调用的时候,调试器会暂停程序等待下一步的指示。以下的这些事件是一个 调试器必须能够捕捉到的(也叫做陷入):

  • 断点触发

  • 内存违例(也叫做访问违例或者段错误)

  • 程序异常

每个操作系统都使用不同的方法将这些事件传递给调试器,这些留到操作系统章节 详细介绍 。部分的操作系统,能捕捉(陷入)更多的事件,比如在线程或者进程的创建以 及动态链接库的加载的时候。

一个优秀的调试器必须是可定制脚本的,能够自定义事件处理函数从而对程序进 行自动化调试。举个例子,一个内存访问违例产生的缓冲区溢出,对于黑客来说相当的有趣。 如果在平时正常的调试中你就必须和调试器交互,一步一步的收集信息。但是当你使用定制 好的脚本操作调试器的时候,它就能够建立起相对应的事件处理函数,并自动化的收集所有 相关的信息。这不仅仅节省了时间,还让我们更全面的控制整个调试过程。