我有一个 Qt 应用程序,我在 release 配置中编译,运行,然后在程序中执行操作 X。一切运行良好。
然后我在调试配置中编译它,运行不调试(所以CTRL+F5),在程序中执行操作X。一切仍然运行良好。
但是当我尝试运行调试配置调试(所以只需按 F5)然后执行操作 X 时,Visual Studio 会中断并显示一条消息,指出已抛出异常... 完全不相关程序的一部分(正在执行的代码远离 VS 中断的站点,在 QHash 模板中)...然后 VS 挂起,我必须用任务管理器将其终止。我可以无限次地重复这个广告,它总是以同样的方式吓坏了。
Boost::exception 用于异常。 VS 是 2008,SP1。 Qt 是 4.6.2,使用来自 Qt 站点的预编译 VS 二进制文件。
有人知道发生了什么事吗?
最佳答案
Visual Studio 有一个称为“第一次机会异常处理”的功能,当附加到调试器运行时,您可以在抛出某些类型的异常时让调试器中断。
您可以通过转到 Debug -> Exceptions
(Ctrl+Alt+E) 并(取消)选中相应的复选框来更改这些设置。
当它中断时,您应该会在“输出”窗口中收到一条消息,指示抛出的异常。
如果您启用了 _HAS_ITERATOR_DEBUGGING
(它在调试版本中默认启用),它可能会导致大量迭代器错误抛出异常,而不是执行会导致访问冲突的操作。这是我能想到的唯一会导致异常“随机”发生的事情。
关于c++ - Visual Studio C++ 异常......怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2313894/