解決這個問題之前,第一個想的是Debug版本和Release版本有什么區別
Debug版:
經過編譯器編譯出的項目.exe文件大,而且生成的二進制命令沒有經過編譯器的優化。項目中包含着豐富的調試信息,供programer調試程序。這就是為什么,當我們在Debug程序的時候,為什么程序就會在我們設置斷點的地方自動停下,而且仿佛時間靜止,還可以顯示此時相關變量的狀態。
Release版:
這個版本是的出發點是用戶,所以不保存調試信息,編譯器在編譯的時候進行了各種優化(變量不會默認賦值之類的),進而達到,代碼文件最小,執行速度最優。
實際上,Debug 和 Release 並沒有本質的界限,並不是非黑即白的。他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。事實上,我們甚至可以修改這些選項,從而得到優化過的Debug版,或是帶有調試信息的Release版。
這樣先通過崩潰信息,檢查代碼,看看是不是有地方引用了不能引用的值之類的代碼問題,比如debug方式下數組越界也大多不會出錯,在release中就暴露出來了。
然后檢查debug和release的配置屬性有什么不同,有時候有些很奇怪的問題就是由於在release的屬性配置中鏈接器——輸入——附加依賴項中添加了調試版本的.lib,仔細檢查這些方面的問題。
實在看不出的話,就讓代碼回退到之前的可以正常運行的版本,對比他們的差異,再一步步排除得到結果。
tip:在debug改動的配置屬性不會同步到release上,要在release上重新配置,這個時候注意添加附加依賴項的時候要使用release版本的庫
