我正在使用Microsoft Minidump功能,因此我可以分析已發佈程序中的崩潰。Microsoft小型轉儲文件沒有提供很多信息
https://msdn.microsoft.com/en-us/library/windows/desktop/ee416349(v=vs.85).aspx
的代碼相似回答這個計算器的問題:
How to write a sample code that will crash and produce dump file?
通常當我有一個碰撞,我可以在Visual Studio中打開崩潰轉儲文件,它會帶我到那些使得排除這些問題非常容易的源代碼行。
但有時並不那麼容易。
我有一個崩潰轉儲文件,我無法找到有問題的源代碼行。這是爲什麼?我可以從這個轉儲文件中獲得哪些有用的信息?任何提示在乾草堆找到針?
這是我在做什麼。
我使用標記簽出此版本的源代碼。
我複製了相應的pdb文件到同一文件夾的崩潰轉儲 - 文件是myprogram.exe.3140.dmp
我再打開與用於構建該exe編譯器的崩潰轉儲時,Visual Studio 2012年
然後我看到一些有用的信息:
最後寫入時間2017年10月10日十五時28分52秒 流程架構:86 異常代碼0000005 異常信息胎面試圖讀取或寫入到它的虛擬地址沒有適當的訪問權限。 堆信息目前
OS版本6.1.7601
模塊: myprogram.exe 1.7.41.0 myprogram.dll 1.1.0.27 等
然後我點擊調試與只有
原住民然後我得到對話框:
myprogram.exe.3140.dmp中0x548BFFD5未處理的異常:0xC0000005:執行訪問衝突位置0x548BFFD5。
在加載模塊中未找到當前堆棧幀。無法顯示此位置的來源。
我點擊斷開按鈕
然後它說幀不在模塊中。在加載的模塊中找不到當前堆棧幀。無法顯示此位置的來源。
我再點擊查看拆解超鏈接,請參見:
548BFFD5? ??
什麼是問號? ?? ??。這是否表示懸掛指針問題?還有別的嗎?
我不完全感到驚訝,你沒有得到任何信息:'訪問衝突執行位置0x548BFFD5' < - 聽起來像你試圖執行代碼實際上不是代碼。可能你破壞了返回地址(通過某種形式的UB)並最終嘗試執行一段隨機存儲器。 – Borgleader