vs2010 程序退出的時候崩潰地方,不知道如何解決?
01-14
我的工程是在vs2010下使用Qt建立工程項目,然而程序退出時,彈出以上的錯誤,這個堆棧指向的都是系統的庫,不知道如何解決,請指教一下,我已經將我工程的代碼全部都屏蔽了,就初始化一個MainWindow窗體,
可是仍然會崩潰,並且崩潰的地方都是直線的系統的庫函數(doexit),所以無法跟蹤調試,
你可以用二分查找法。每次刪掉懷疑範圍裡面的一半的代碼,看看退出的時候會不會崩潰。很快就找到了。
C++程序的一大特點就是崩潰的地方十有八九不是真正出錯的地方,所以你光貼幾行代碼是沒用的。話說想讓程序在出錯點崩潰絕對是高級技能。
這問題怎能靠猜? vs可以直接載入系統dll的symbols啊,然後調用棧里就清晰明了了.
@汪周洋 已經指出題主的 pdb 載入不正確,請題主在「Call Stack」窗口中選中「[Frames below may be incorrect because ....]」一項,點擊滑鼠右鍵,選擇「重新載入符號」。如果有必要的話,請題主檢查一下 設置 → 選項 中的 「符號載入設置」 一項中是否啟用了 Microsoft 符號伺服器。然後,請你反覆 重新載入符號 ,直到 調用堆棧 窗口 不再出現 [由於尚未載入 ... 的符號文件,以下的調用堆棧可能不正確] 的提示為止。正如調用堆棧中條目提示的那樣,出現此條提示以下的所有調用堆棧都是不正確的。
我感覺你的pdb文件是不是不正確,如果不正確,堆棧都不對,如何查?
你先看dll dependency是誰鏈接mfc42的。看不出來就掛windbg, 然後sxe ld斷在load module,看看mfc42是怎麼載入的。
自己跟代碼、、找到在你寫的那句出的問題、、
圖上好像清楚地寫著 doexit() 第 621 行。。。
main 函數全注釋,看是不是問題依舊。然後二分法注釋,編譯。不出意外,試個幾次就調試出來了。
檢查編譯器和庫的版本對不對的上
一般是內存泄露導致的。或者是有些資源申請了沒釋放就到退出了。
應該是全局對象的析構函數,或者是運行時內存損壞了。。
推薦閱讀:
※C++多線程環境下里如何精確獲取shared_ptr的引用計數?
※如何評價Andrei Alexandrescu提出的c++ policy-based design?
※為什麼libstdc++的allocator要實現兩個operator==?
※為什麼在 C++ 中不提倡 C 風格的強制類型轉換?
※你讀過的最好的 C++ 開源代碼是什麼?
TAG:QtC開發框架 | C | MicrosoftVisualStudio2010 |