这是我堆栈溢出的第一个问题,因为直到现在,我总是设法find我的答案。
所以..我正在写一个debbuger(对于Windows,在python中,使用WinAppDbg库),应该跟踪程序执行,并遇到一些问题。
我正在设置陷阱标志,所以我可以停止每一步。 第一个问题 – 有时执行stream经过Windows api,转到内核。 当它返回时,显然陷阱标志是closures的,并且线程的执行可能会继续执行数百万条指令,而没有我的debbuger跟踪它的每一步。
可能的解决scheme – 在调用Windows API之前,我将下一个地址权限设置为保护页面,因此当调用返回时,我得到一个保护页面exception,再次设置陷阱标志,并继续跟踪。 但这会导致一个不同的问题(我称之为“第二个问题”)
第二个问题 – 因为我设置了主线程的陷阱标记,所有我看到的是该线程的一个循环(我想这是Windows的GUI循环),程序执行不会前进(例如,应该新线程创build,但我没有看到他们)。
那么我在找什么? 一个debugging器的源代码,可以处理我所描述的问题。 或者更好的是,解决我的问题。 我究竟做错了什么?
谢谢你们!