<!DOCTYPE html>
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下运行。。