- 工具
這里用到兩個工具分別為Procdump+Windbg
Procdump:ProcDump是一個命令列實用工具,主要目的是監視應用程式,以便在管理員或開發人員可用于確定峰值的原因期間監視 CPU 峰值和生成故障轉儲, ProcDump 還包括使用視窗掛起 (使用相同的視窗掛起定義,Windows和任務管理器使用) 、未經處理的例外監視,并可以根據系統性能計數器的值生成轉儲, 它還可用作可在其他腳本中嵌入的常規行程轉儲實用工具,(最主要的是輕量、跨平臺)微軟介紹地址
Windbg:Windbg是在windows平臺下,強大的用戶態和內核態除錯工具,相比較于Visual Studio,它是一個輕量級的除錯工具,所謂輕量級指的是它的安裝檔案大小較小,但是其除錯功能,卻比VS更為強大,它的另外一個用途是可以用來分析dump資料, - 準備測驗程式
之所以這樣寫是為了讓程式崩潰掉,利于我們抓取Dump檔案
- [class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var jj = Console.ReadLine();
Console.WriteLine(jj);
new TestMain().main();
Console.ReadLine();
}
}
class TestMain {
public void main() {
Timer timer = new Timer(new TimerCallback(m =>
{
var r = 10 / Convert.ToInt32("0");
}), null, 60000, 5000);
}
} ]
- 抓取dump
這里我們利用Procdump工具抓取行程崩潰時的dump,首先下載好Procdump工具,

下載完成后,進入工具目錄在目錄中打開cmd命令列工具定位到當前目錄
在命令列中輸入procdump -e -ma -w Bcode_ConsoleApp.exe監控exe應用 這里也可以輸入程式的PID

等待應用執行,下面運行我們的測驗程式

接下來等程式崩潰

OK這里我們就完成了一大步,我們成功抓取到dump檔案,dump檔案就在Procdump工具目錄下

- 決議dump查找問題原因
這里我們利用微軟的Windbg強大工具進行決議處理

這里我們成功打開了dump檔案并查找到4個執行緒
在【54b0】執行緒中我們看到一個錯誤,然后查看一下錯誤的具體資訊

從錯誤資訊中我們可以看到堆疊資訊,找到堆疊資訊對照我們的程式代碼就可以定位并解決問題了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/458249.html
標籤:.NET技术
