2011-06-05 97 views
2

今天我在运行时遇到了非常奇怪的异常。我试图逐步调试,但在调用main()之前发生异常。在运行时在Visual C++ 10中出现奇怪的异常

所以我删除了每个包含和整个代码(评论它),并添加了一个空的main()函数。

并且在编译之后再次发生。也许一个项目配置错误?

顺便说一句:在例外之后,VC10 Debugger进入strlen.asm并且说空指针。

VS10解决方案有2个项目,第二个项目真的很好,第一个项目也做得很好,但在编译第二个项目后,它停止了工作。

该项目具有相同的二进制输出,但他们有一个额外的输出文件夹为obj等..文件,为每个项目。

那么,那里发生了什么?

+6

有任何全局变量?他们的c'tor可能会导致异常 – amit 2011-06-05 08:15:09

+1

下次请忽略WTF。 – stijn 2011-06-05 08:15:41

回答

5

问题很可能是全局或静态对象初始化的一部分,然后用空指针调用strlen。你有任何.cpp中的全局变量吗?或者某些类中的任何静态?

请注意,即使您从main.cpp中删除所有内容,其他.cpp文件仍将被编译并导致错误。

+0

非常感谢你,我明白了,我在一个类中有一个静态的std :: string。 – Aurus 2011-06-05 11:23:41

0

没有任何细节,很难说出任何细节,所以我只能基于两次类似的经历分享建议。它不在Visual Studio中,但可能碰巧遇到同样的问题。

  1. 您可能需要动态加载的组件(dll,ocx等),它不在您运行调试版本的路径中。

  2. 你可能已经失常全球初始化