我有一个Qt应用程序,我在发布配置中编译,运行,然后在程序中执行操作X.一切都运行良好。
然后我在 debug 配置中编译它,运行而不调试(所以CTRL + F5),在程序中执行操作X.一切仍然运行花花公子。
但是当我尝试使用调试运行调试配置(所以只是F5)然后执行操作X时,Visual Studio会突然显示已抛出异常的消息... 完全不相关的程序的一部分(正在执行的代码远离VS破坏的站点,在QHash模板中)......然后VS挂起,我必须使用任务管理器将其终止。我可以无限制地重复这个广告,并且它总是以同样的方式发疯。
Boost :: exception用于例外。 VS是2008,SP1。 Qt是4.6.2,使用来自Qt站点的预编译VS二进制文件。
有没有人知道发生了什么?
答案 0 :(得分:4)
Visual Studio有一个名为“第一次机会异常处理”的功能,当运行附加到调试器时,可以在抛出某些类型的异常时让调试器中断。
您可以通过转到Debug -> Exceptions
(Ctrl + Alt + E)和(取消)选中相应的复选框来更改这些设置。
当它中断时,你应该在Output窗口中看到一条消息,指出抛出了什么异常。
如果启用了_HAS_ITERATOR_DEBUGGING
(默认情况下在调试版本中启用),则会导致很多迭代器错误抛出异常,而不是执行会导致访问冲突的操作。这是我唯一可以想到的,会导致异常“随机”发生的事情。