1. 程式人生 > 實用技巧 >使用VS2013分析DMP檔案

使用VS2013分析DMP檔案

當一個釋出的.NET應用程式出現app crash,無法通過日誌分析異常原因時,就需要通過分析DMP檔案了,傳統方式是通過WinDbg來分析DMP檔案,但是WinDbg用起來不是很方便,其實VS就是一個很好的DMP檔案分析工具,這裡我們通過一個簡單的控制檯專案來分析一個DMP檔案。

一、準備一個Demo專案

  (1)在VS中新建一個控制檯專案,取名Sobey.NullPointerDemo,並在Main方法中寫入以下程式碼:

    class Program
    {
        static void Main(string[] args)
        {
            Person p 
= null; // NullPointerException will happen in next line Console.WriteLine("{0}-{1}", p.ID, p.Name); Console.ReadKey(); } }

  其中,Person類的定義如下:

    public class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

  經實驗,.NET Framework版本號4.0及以上都可以。

  (2)設定為Release,並編譯生成可執行檔案
  (3)執行.exe程式,出現crash現象,在工作管理員中生成DMP檔案(在指定exe上右鍵選單中選擇建立轉儲檔案)

二、分析DMP檔案

  (1)到生成目錄下將生成的DMP檔案拷貝到Release目錄下(和exe、pdb一個目錄下)

  (2)雙擊DMP檔案會直接進入VS,可以看到Summary資訊

  (3)可選步驟:設定符號路徑

  (4)設定關聯原始碼路徑

  (5)一切就緒,點選“除錯託管記憶體”

  (6)檢視具體異常原因,定位異常程式碼位置

  找到了具體異常位置之後,就可以著手改bug了。這是一個很簡單的空指標異常,但是一個簡單的空指標異常卻可以引起程式的崩潰,這也說明我們在編碼的時候要時刻注意程式碼的質量,特別是魯棒性方面,尤其是需要對NULL指標做過濾。

  最後,感謝Microsoft提供了這麼優秀也這麼“重量級"的IDE:

作者:周旭龍

出處:http://edisonchou.cnblogs.com

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。

出處:https://www.cnblogs.com/edisonchou/p/4793183.html