【发布时间】:2011-11-28 20:36:45
【问题描述】:
我有一个 C++ 应用程序,当我尝试从断点单步执行时会引发异常。例如:
1) 从 VS2010 启动应用程序 0 附加调试器。
2) 设置断点。在哪里似乎并不重要。
3) 在应用程序中执行某些操作以使其到达断点。
** VS2010 遇到断点
4) 单步调试器到下一行代码。
VS2010弹出消息框有这个异常:
“SimpleGraphSDI.exe 中 0x087df66f 处的未处理异常:0xC0000005:访问冲突。”
请注意,如果我在连续两行代码上设置断点,然后按运行从一行前进到另一行,则应用程序“运行”到下一行代码没有问题。只有当我使用 VS2010 中的单步命令时才会出现访问冲突。
应用程序中的一些代码自 VC6 以来就已经存在,甚至可能更早。但是不知道这是否相关。
更新:如果我启动应用程序,然后在应用程序启动后附加调试器,单步调试器确实不会发生异常。
【问题讨论】:
-
您是否使用该 GFX 库来独占控制屏幕? IE。将您的应用切换到全屏模式?
-
请发布重复问题的最小代码。
-
这里没有足够的信息来帮助你。
-
我没有答案,但可以尝试以下方法:重新启动 Visual Studio;对您的应用程序进行干净的构建;显示反汇编窗口并逐步执行说明以查看发生了什么。这是一个多线程应用程序吗?是否有可能其他线程在工作?当您遇到访问冲突时,堆栈跟踪会告诉您什么?
-
尝试打破访问冲突并查看堆栈跟踪。找出哪个模块拥有
0x087df66f以及执行是如何结束的。
标签: c++ visual-studio-2010 debugging