我一直在尝试使用编程数据断点,例如
当我不调试程序时,我的数据断点可以完美地工作(它会崩溃并显示
另外,在调试器中,我可能会吞掉
CBreakpoint
,通过使用SetThreadContext
直接设置调试寄存器。大多数参考资料都表明,即使Visual Studio没有设置该数据断点,它仍会在遇到数据断点时停止。然而,这似乎不是Visual Studio 2010的工作方式。当我不调试程序时,我的数据断点可以完美地工作(它会崩溃并显示
STATUS_SINGLE_STEP
,这是由数据断点引发的异常)。如果我用WinDbg进行调试,它也能正常停止。但是在Visual Studio 2010下调试时,它似乎只是继续执行而忽略了断点。有人在Windows 7下使用Visual Studio 2010设置编程数据断点的经验吗?是否需要做些什么才能让它们停下来?(我尝试将STATUS_SINGLE_STEP
添加到“首次机会异常”列表中,但行为没有任何变化。)另外,在调试器中,我可能会吞掉
STATUS_SINGLE_STEP
异常吗?结构化异常处理程序会在调试器看到之前阻止掉异常吗?这是x86_64程序的影响吗?在Visual Studio 2010设置中需要做些什么吗?
INT 2C
,您需要通过WriteProcessMemory
设置(我不知道__debugbreak
是否适用于您的用例)。 - Necrolis