我一直在尝试使用编程数据断点,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 设置中我需要做一些舞蹈吗?