分类:
2009-03-22 20:14:35
多线程调试
调试多线程的调试器通常也是多线程应用程序。通常是一个线程处理被调试进程,另外的一个或者多个程序用来处理用户接口相关的事件。这个专用的目标线程将大部分时间花在WaitForDebugEvent, 只有当目标线程停止的时候才返回。
下面是几个调试器所需要的调试事件:
l EXCEPTION_DEBUG_EVENT
l CREAT_THREAD_DEBUG_EVENT
l CREAT_PROCESS_DEBUG_EVENT
l EXIT_THREAD_DEBUG_EVENT
l EXIT_PROCESS_DEBUG_EVENT
当调试事件发生时,所有的目标进程挂起,调试器通过WaitForDebugEvent得到通知。
我们也可以通过GetThreadContext()获取线程上下文信息,也可以通过SetThreadContext()设置线程上下文信息。
调试器提供了弹性的功能,它允许用户只调试一个进程,运行一个进程或者冻结某一个进程。当然,这些同样需要操作系统提供相应的API支持。