案例分享:fatal error C1001: 編譯器中發生內部錯誤

1>正在生成代碼

1>c:\********************************\src\thread.cpp : fatal error C1001: 編譯器中發生內部錯誤。

1>(編譯器文件“d:\agent\_work\1\s\src\vctools\compiler\utc\src\p2\main.c”,第 187 行)

1> 要解決此問題,請嘗試簡化或更改上面所列位置附近的程序。

1>請選擇 Visual C++

1>“幫助”菜單上的“技術支持”命令,或打開技術支持幫助文件來獲得詳細信息。

1>  link!InvokeCompilerPass()+0x3965d

1>  link!CloseTypeServerPDB()+0x11d9a7

1>

 

情況描述:

Debug下編譯正常,Release下編譯報錯,出問題的thread.cpp文件沒有修改過

環境:Win10 + VS2017

出現做了如下嘗試

1、升級IDE,IDE有可更新的版本,更新後問題依舊。

2、註釋thread.cpp所有具體實現和頭文件引用,問題依舊

3、調整編譯器優化,原來項目的優化項“最大優化(優選速度) (/O2)",後經過調查有網友表示調整爲不優化可通過編譯。

     打開項目的屬性頁->C++ -> 優化 -> 優化項調整爲"禁用/od",然後重新編譯通過,後面嘗試"優化(優選速度) (/Ox)"也可以通過編譯。

    但是不希望調整該優化選項,保持編譯器的最大優化。暫時不考慮該解決方式。

4、最後對比了下最近改動可能導致問題的可疑點,進行了還原,然後編譯通過,再還原回來,編譯依然通過。

 

最後又多次重新編譯嘗試,沒有出現編譯器錯誤.......莫名奇妙的修復了,如果有大佬知道具體原因歡迎分享。

 

如果遇到類似的問題可以考慮如下步驟解決

1、如果有提示具體的文件和行數,則可以直接從該出問題的代碼調整看看是否能修復

2、如果沒有具體的行數,大概率不完全由於該文件直接導致的,可以考慮先清理下工程,重啓系統,有時候啓動時間過長會導致一些不可預知的錯誤。

3、如果重啓還沒有效果,不介意優化選項調整的話,可直接調整編譯優化選項。

4、沒招就只能走查代碼了,需要比對下最近最可疑的修改嘗試還原。

5、有些問題可能是特定IDE版本導致的,可以試試更新IDE

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章