我有一个C ++应用程序,当我尝试从断点单步时会抛出异常。例如:
1)从VS2010启动应用程序0附加调试器。
2)设置断点。在哪里似乎并不重要。
3)在应用程序中执行某些操作以使其达到断点。
** VS2010达到突破点
4)将调试器单步执行到下一行代码。
VS2010弹出一个消息框,但有以下异常:
“SimpleGraphSDI.exe中0x087df66f处的未处理异常:0xC0000005:访问冲突。”
请注意,如果我在两行连续的代码行上设置断点,并按run键从一行前进到另一行,则应用程序“运行”到下一行代码而没有任何问题。仅当我使用VS2010中的单步命令时才会发生访问冲突。
应用程序中的一些代码自VC6以来可能已经存在,也许更早。但是不知道这是否相关。
更新:如果启动应用程序,单步执行调试程序时出现不的异常,然后在应用程序启动后附加调试程序。
答案 0 :(得分:2)
解决此问题的方法是禁用RPC调试。
在Visual Studio 2010中,Visual Studio 2010 SP1工具栏选择以下步骤 -
工具 - >选项 - >调试 - >原生并取消选择“启用RPC调试”
答案 1 :(得分:2)
我有同样的问题。我能够通过从命令行启动VS来解决它,告诉它将UI重置为默认值(/ResetSettings)
命令行参数的详细信息为here
重置VS后我不需要重启,但在完成环境重置后我完成了项目的重建。
答案 2 :(得分:0)
可能存在一个线程以某种方式检测到代码正在逐步调试,并且页面故障响应以防止您进行调试。尝试通过逐个挂起线程来找到该线程。
另外,地址0x087df66f总是一样吗?如果是,那么你可以在那里设置一个断点,并在断点被击中时环顾四周。