Process Dumper - 為異常關閉的進程保存轉儲文件

2009/8/15 11:08:34    編輯:Windows7之家 - Mary Jane     字體:【

Win7之家m.airtaxifl.com):Process Dumper - 為異常關閉的進程保存轉儲文件

在 Windows 系統(tǒng)的“啟動與故障恢復”中設置“寫入調(diào)試信息”,以便在 Windows 遇到藍屏故障后通過 Debugging Tools for Windows 分析藍屏時自動保存的內(nèi)存轉儲文件(Crash Dump File)以排查藍屏故障原因的方法相信很多人都非常熟悉了。詳細介紹可以參考《Windows 常見藍屏故障分析》。

除 了 Windows 藍屏故障以外,很多應用程序進程異常關閉或停止響應的軟件故障也可以通過分析轉儲文件加以排查。Windows 沒有直接提供為應用程序保存轉儲文件的功能,我們可以在微軟官方網(wǎng)站下載 User Mode Process Dumper 8.1(以下簡稱為 UserDump):

http://www.microsoft.com/downloads/details.aspx?FamilyID=E089CA41-6A87-40C8-BF69-28AC08570B7E&displaylang=en&displaylang=en


此工具可以監(jiān)視運行中的 Win32 進程并為其保存轉儲文件,不會附加調(diào)試器或中止進程,而且可以監(jiān)控 CSRSS.EXE、SERVICES.EXE、WINLOGON.EXE 之類系統(tǒng)核心進程。下載后運行 SETUP.EXE,安裝內(nèi)核模式驅(qū)動程序 USERDUMP.SYS、添加 USERDUMP 系統(tǒng)服務并在控制面板中生成 Process Dump 圖標。注意在安裝時要選擇“Enable Dump on Process Termination Feature”復選框。

如果某應用程序進程經(jīng)常異常關閉,我們可以雙擊控制面板中的 Process Dump 圖標,在 Process Monitoring 選項卡中點擊“New(新建)”,然后輸入需要監(jiān)控的進程名稱,無需輸入進程完整路徑。接下來點擊“Rules(規(guī)則)”按鈕,為監(jiān)控的進程選擇錯誤類型 規(guī)則,在此可以選擇“Select All(選擇所有)”,這樣當進程觸發(fā)了規(guī)則中的任一條錯誤類型規(guī)則后,UserDump 都會自動保存轉儲文件。我們在此還可以設置轉儲文件的保存位置,默認是 Windows 文件夾,建議修改為其它位置。
 
如果某應用程序進程在運行時停止了響應,我們可以首先通過任務管理器記下此進程的 PID,然后以命令行方式執(zhí)行 UserDump.EXE <PID> 命令以生成轉儲文件。
 
應用實例:
 
筆者曾經(jīng)在 Windows 中運行《恐龍危機 II》游戲時遇到游戲主進程 Dino2.EXE 異常關閉的問題。游戲雖然可以正常載入并在大部分場景中正常運行,但在進入 Regina 與 Dylan 交替掩護闖異特龍巢穴的特定關卡中,只要一發(fā)射信號彈就肯定會“Dino2.EXE 遇到了問題需要關閉”。經(jīng)檢查,游戲的所有程序文件都沒有損壞,經(jīng)卸載重裝游戲后問題依舊。于是筆者用 UserDump 設置了監(jiān)控 Dino2.EXE 進程,重新運行游戲后,UserDump 檢測到活動的 Dino2.EXE 進程并自動監(jiān)控其狀態(tài),當游戲異常關閉后,相應的轉儲文件也保存好了。經(jīng)過分析轉儲文件得知,Dino2.EXE 在那個特定的關卡中加載 D3DIM.DLL 時遇到了問題,D3DIM.DLL 是一個 DirectX 文件,那個特定關卡中的信號彈是需要經(jīng)過特定 Direct3D 渲染的,因此才會出現(xiàn)游戲可以正常載入、但只要一在那個特定關卡發(fā)射信號彈就異常關閉的問題。了解故障原因后,筆者嘗試重新安裝顯示驅(qū)動程序及 DirectX 運行時組件以修復 Direct3D 設置,重新運行游戲后問題得以解決。

文/ alx-zj