C++ 基于windowsapi的自定义调试器-调试多线程进程

C++ 基于windowsapi的自定义调试器-调试多线程进程,c++,windows,multithreading,debugging,C++,Windows,Multithreading,Debugging,在我的调试器中,我将特定内存地址设置为0xCC(int3),当执行时,其中一个线程到达该地址。异常被抛出。在处理异常时,我将IP寄存器减去0xCC之前的一条指令,并用原始字节替换0xCC。我还在线程上下文中设置了一个标志,以在执行一条指令后引发异常-我需要设置回0xCC字节 问题: 代码执行正确,但我意识到可能存在错误。在收到异常后,我将原始字节设置回原处,并将线程中的标志设置回调试器,直到调试器执行一条指令(它允许我将int3设置回原处)。听起来不错,但我检测到,在原始字节执行后,另一个线程也

在我的调试器中,我将特定内存地址设置为0xCC(int3),当执行时,其中一个线程到达该地址。异常被抛出。在处理异常时,我将IP寄存器减去0xCC之前的一条指令,并用原始字节替换0xCC。我还在线程上下文中设置了一个标志,以在执行一条指令后引发异常-我需要设置回0xCC字节

问题:
代码执行正确,但我意识到可能存在错误。在收到异常后,我将原始字节设置回原处,并将线程中的标志设置回调试器,直到调试器执行一条指令(它允许我将int3设置回原处)。听起来不错,但我检测到,在原始字节执行后,另一个线程也会执行此指令,而不会引发异常(我认为这可能与线程切换有关)。

好吧,当多个线程执行同一代码时,这当然是可能的。允许程序员冻结和解冻一个线程,让他尝试调试多线程代码是一个标准的调试器功能。好的,但是你能给我描述一下正确实现它的机制或算法吗?嗯,当多个线程执行同一代码时,这当然是可能的。允许程序员冻结和解冻线程,让他尝试调试多线程代码是一个标准的调试器功能。好的,但是你能给我描述一下正确实现它的机制或算法吗?