vs2010 程序退出的時候崩潰地方,不知道如何解決?

我的工程是在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 |