调试器中的C ++单步引发异常

时间:2011-11-28 20:36:45

标签: c++ visual-studio-2010 debugging

我有一个C ++应用程序,当我尝试从断点单步时会抛出异常。例如:

1)从VS2010启动应用程序0附加调试器。

2)设置断点。在哪里似乎并不重要。

3)在应用程序中执行某些操作以使其达到断点。

** VS2010达到突破点

4)将调试器单步执行到下一行代码。

VS2010弹出一个消息框,但有以下异常:

“SimpleGraphSDI.exe中0x087df66f处的未处理异常:0xC0000005:访问冲突。”

请注意,如果我在两行连续的代码行上设置断点,并按run键从一行前进到另一行,则应用程序“运行”到下一行代码而没有任何问题。仅当我使用VS2010中的单步命令时才会发生访问冲突。

应用程序中的一些代码自VC6以来可能已经存在,也许更早。但是不知道这是否相关。

更新:如果启动应用程序,单步执行调试程序时出现的异常,然后在应用程序启动后附加调试程序。

3 个答案:

答案 0 :(得分:2)

解决此问题的方法是禁用RPC调试。

在Visual Studio 2010中,Visual Studio 2010 SP1工具栏选择以下步骤 -

工具 - >选项 - >调试 - >原生并取消选择“启用RPC调试”

答案 1 :(得分:2)

我有同样的问题。我能够通过从命令行启动VS来解决它,告诉它将UI重置为默认值(/ResetSettings)命令行参数的详细信息为here

重置VS后我不需要重启,但在完成环境重置后我完成了项目的重建。

答案 2 :(得分:0)

可能存在一个线程以某种方式检测到代码正在逐步调试,并且页面故障响应以防止您进行调试。尝试通过逐个挂起线程来找到该线程。

另外,地址0x087df66f总是一样吗?如果是,那么你可以在那里设置一个断点,并在断点被击中时环顾四周。