运行时 Visual C++ 10 中的奇怪异常
Posted
技术标签:
【中文标题】运行时 Visual C++ 10 中的奇怪异常【英文标题】:curious exception in Visual C++ 10 at runtime 【发布时间】:2011-06-05 08:09:43 【问题描述】:今天我在运行时遇到了非常奇怪的异常。我尝试一步步调试,但是在调用main()
之前出现异常。
所以我删除了每个包含和整个代码(注释它),并添加了一个空的main()
函数。
再次,在编译后发生。可能是项目配置错误?
顺便说一句:在异常发生后,VC10 调试器转到 strlen.asm 并显示空指针。
VS10 解决方案有 2 个项目,第二个工作得很好,第一个也很好,但是在我编译第二个项目后,它停止工作了。
项目具有相同的二进制文件输出,但它们为每个项目的 obj 等文件提供了一个额外的输出文件夹。
那么,那里发生了什么?
【问题讨论】:
有全局变量吗?他们的 c'tor 可能会导致异常 下次请忽略 WTF。 【参考方案1】:问题很可能是全局或静态对象初始化的一部分,然后使用空指针调用strlen
。您在任何 .cpp 中是否有任何全局变量?或者某些类中的任何静态?
请注意,即使您从 main.cpp 中删除所有内容,其他 .cpp 文件仍然会被编译并导致错误。
【讨论】:
非常感谢,我明白了,我在一个类中有一个静态std::string。【参考方案2】:没有任何细节,很难说清楚,所以我只能根据我的两次类似经历分享建议。它不在 Visual Studio 中,但您可能碰巧遇到了同样的问题。
您可能需要一个不在运行调试版本的路径中的动态加载组件(dll、ocx 等)。
您可能有不当的全局初始化
【讨论】:
以上是关于运行时 Visual C++ 10 中的奇怪异常的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2008 发布版本上的 c++ 应用程序出现未处理异常 - 从函数返回时发生
无法在 Visual Studio 2017 (Native c++) 中禁用数据断点