ebugger2

<!DOCTYPE html>

debugger2

debugger2

(gray hat python 一书的中文版 《Python灰帽子》里面的代码排版简直稀烂的,他们是知道还是不知道,这是一个问题。难道他们觉得代码看看就好了,不必自己运行?Python是没有花括号的,而是用缩进来表示代码块.

(纸上得来终觉浅,终知此事须躬行)

在第一版调试器上添加一些新功能。

在debugger模块上的debugger类中,又添加了5个新方法,调用了5个windowsAPI函数。

打开进程函数、附加到进程的函数、等待异常并循环的函数、继续执行的函数、与被调试进程分离的函数。

不知道为什么有些进程可以附加,有些不行。


我们还没有构建具体调试进程的方法,只是输入一个进程的编号PID,将调试器附加到进程,之后退出。


接下来使用几个API,获取寄存器的状态函数、获得线程列表函数、枚举线程列表函数、循环遍历列表函数、提取线程信息函数



在第六个方法get_debug_event方法中,将 “press a key to continue ”删除,换成输出线程信息


事件码3,代表创建进程事件

事件码6,代表加载动态链接库事件

事件码2,代表加载线程调试事件

事件码1,代表异常调试断点。这是由windows里自动驱动的断点引发的,为了方便我们检查进程的

事件码4,代表退出线程调试事件。


由于程序出现异常,都是以事件码1出现的,所以要着重注意这个事件。

还是第六个方法,get_debug_event(),将它改一下,添加代码让它能够给出断点的位置。


出了几个小错误,1,书上代码喜欢漏掉一些东西。。不知道为啥,按照下载下来的作者的源码更正了下。 2,AttributeError 表示尝试访问未知的对象的属性,说明94行没有这个对象可以访问,,那就是我忘记创建这个对象了。更正以后:



过了几天,再运行的时候发现程序出错了?目前还不知道是什么问题


我发现还是要在Windows 32下运行。。