2.3 调试事件
调试器在调试程序的时候会一直循环等待,直到检测到一个调试事件的发生。当调试事 件发生的时候,就会调用一个与之对应的事件处理函数。
处理函数被调用的时候,调试器会暂停程序等待下一步的指示。以下的这些事件是一个 调试器必须能够捕捉到的(也叫做陷入):
断点触发
内存违例(也叫做访问违例或者段错误)
程序异常
每个操作系统都使用不同的方法将这些事件传递给调试器,这些留到操作系统章节 详细介绍 。部分的操作系统,能捕捉(陷入)更多的事件,比如在线程或者进程的创建以 及动态链接库的加载的时候。
一个优秀的调试器必须是可定制脚本的,能够自定义事件处理函数从而对程序进 行自动化调试。举个例子,一个内存访问违例产生的缓冲区溢出,对于黑客来说相当的有趣。 如果在平时正常的调试中你就必须和调试器交互,一步一步的收集信息。但是当你使用定制 好的脚本操作调试器的时候,它就能够建立起相对应的事件处理函数,并自动化的收集所有 相关的信息。这不仅仅节省了时间,还让我们更全面的控制整个调试过程。