資料整合於各網友大佬。
debug和release兩種編譯模式的區別:
1. 使用彈出對話框的方法,確定是哪里出錯了,然后再查看問題。此方法是笨方法,適用於新手,可以解決一些問題,但是只能定位,無法像調試一樣查看過程中變量的信息。
2. 此外,在實踐中發現,通過上述方法會對結果產生影響,為避免此現象發生,換一種方法(在QT下),使用qInstallMessageHandler(myoutput);其中myoutput,是根據qt幫助文檔中的例子寫的(直接復制過來就能用)然后再需要打印提示信息的地方直接使用即可。具體查看可通過以下設置查看錯誤信息:
第一是打開項目屬性->連接器->系統->子系統->選擇控制台;即可在控制台上輸出打印信息;
第二是直接在剛才函數后面添加一個文件,以讀寫和追加方式打開,將調試信息輸出到文本文件中。
3. 其實,更好的解決方法是:
設置release版本下的屬性,c/c++->優化->已禁用;
連接器調試->生成調試信息改為優化以便於調試,即可像debug一樣打斷點進行調試了。
經過一番折騰,最后發現是有個指針變量沒有賦初值導致的。常見的debug沒問題而release出錯的情況主要有:
變量未初始化;
數據溢出;
內存分配方式不同引起的問題等。