使用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:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM