2011-06-05 220 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. 你可能已經失常全球初始化

相關問題