我們在啓動時遇到Windows C++應用程序崩潰。當前只發生在我們的win 8.1機器上(其他開發機器是windows 7),並且只發生在發佈版本上。堆棧跟蹤每次都有點不同,但總是與內存分配有關,所以它可能是堆損壞問題。由於競爭條件導致的堆損壞 - 應用程序放慢時不會發生。如何調試?
的問題是,一旦應用程序變慢了一點,不會發生崩潰:
調試版本不死機。
如果發佈構建應用程序與調試crt(靜態或動態)鏈接,則不會發生崩潰,因此CRT調試堆不能用於跟蹤問題。
如果應用程序驗證掛到應用程序,並選擇「堆」的測試,該應用程序不會崩潰。
運行通過「Dr.Memory」的應用也導致崩盤不會發生。
在所有這些情況下崩潰不會發生,應用程序略有放緩,尤其是啓動確實需要更長的時間,所以我的假設是,它引起的競爭條件堆損壞。
如果我們不能使用CRT調試堆或緩慢執行應用程序的工具(因爲它不會崩潰),那麼追蹤堆損壞情況的好方法是什麼?