Sysinternals系列工具之Process Monitor
Winternals是一家提供系統恢複和資料保護解決方案的公司,開發了一系列廣受好評的免費系統工具。2006年該公司被微軟公司并購,成為微軟的子公司,這些免費工具也納入微軟的Windows Sysinternals網站繼續供人免費下載下傳。
這些免費的工具包括檔案和磁盤、安全、網絡、系統資訊、程序管理等各種不同用途的小程式。它們體積小巧,功能強大,這些特點一向有口皆碑。而且由于是微軟官方網站釋出的,可靠性安全性等方面都有保證。
Windows Sysinternals網址:
http://technet.microsoft.com/en-us/sysinternals/default.aspx
我會陸續向大家介紹其中一些比較常用的工具,今天先從Process Monitor程序螢幕開始,這個軟體看上去比較專業,可能不少人覺得自己用不到它。其實對于一般使用者來說,隻要你希望親自解決軟體故障,了解某個程式的幕後運作,查找系統中的可疑程序,Process Monitor都會成為你的得力助手。
英文原版下載下傳位址:
http://download.sysinternals.com/Files/ProcessMonitor.zip
1.32漢化版(wbpluto漢化)下載下傳位址:
http://download.cnbeta.com/wbpluto/ProcessMonitorHH.rar
Process Monitor中含有不少專業術語,初次接觸的人可能會覺得難以上手,是以推薦使用漢化版。這個軟體的幫助文檔中已經比較詳細的介紹了它的用法,就像軟體作者所說的,“熟悉Process Monitor最好的方法就是通讀幫助檔案”。但是該漢化版隻漢化了軟體的界面,并沒有将原版的幫助文檔也一并漢化,是以我花了一些時間将Process Monitor的幫助文檔翻譯成了中文,并針對目前的最新版本做了一些修改。為了便于大家對照學習,文中涉及到程式界面的地方沿用了漢化版中的譯法。第一次翻譯這麼長的鷹文,這個作者還盡寫老長老長的句子,讓人頭疼,本人水準有限,如有錯漏之處還請多指教。
---------------------------------------分-----隔-----線---------------------------------------
Process Monitor 幫助文檔
版權所有 © 1996-2007 Mark Russinovich 和 Bryce Cogswell
Sysinternals - www.sysinternals.com
中文翻譯:bobbyworm - [email protected]
【介紹】
Process Monitor(程序螢幕)是一個Windows下的進階監視工具,可以實時顯示檔案系統、系統資料庫和程序/線程的活動。它将Sysinternals以前的兩個實用程式Filemon(檔案螢幕)和Regmon(系統資料庫螢幕)結合在一起,并且添加了大量的改進功能,包括豐富的非破壞性的過濾器,全面的事件屬性——如會話ID和使用者名,可靠的程序資訊,對每個操作帶有內建的調試符号支援的完整線程堆棧,同步記錄日志檔案等等。Process Monitor獨特的強大功能将使它成為你在系統故障排除和惡意軟體清除中使用的核心實用程式。
Process Monitor可以在Windows 2000 SP4 with Update Rollup 1、Windows XP SP2、Windows Server 2003 SP1、Windows Vista,以及64位版本的Windows XP、Windows Server 2003 SP1和Windows Vista等系統上運作。(譯者注:Process Monitor不支援Windows 98、Windows NT等以前的系統,不過可以使用Filemon和Regmon來實作它的部分功能。)
【在Filemon和Regmon基礎上的改進】
Process Monitor的使用者界面和選項與Filemon和Regmon很相似,但它是從頭全部重寫的,并且包括許多重大改進,例如:
(此處引用自wbpluto的漢化版說明)
• 監視程序和線程的啟動和退出,包括退出狀态代碼
• 監視映像 (DLL 和核心模式驅動程式) 加載
• 捕獲更多輸入輸出參數操作
• 非破壞性的過濾器允許你自行定義而不會丢失任何捕獲的資料
• 捕獲每一個線程操作的堆棧,使得可以在許多情況下識别一個操作的根源
• 可靠捕獲程序詳細資訊,包括映像路徑、指令行、完整性、使用者和會話ID等等
• 完全可以自定義任何事件的屬性列
• 過濾器可以設定為任何資料條件,包括未在目前視圖中顯示的
• 進階的日志機制,可記錄上千萬的事件,數GB的日志資料
• 程序樹工具顯示所有程序的關系
• 原生的日志格式,可将所有資料資訊儲存,讓另一個 Process Monitor 執行個體加載
• 程序懸停提示,可友善的檢視程序資訊
• 詳細的懸停提示資訊讓你友善的檢視列中不能完整顯示的資訊
• 搜尋可取消
• 系統引導時記錄所有操作
要熟悉Process Monitor的功能,最好的方法是通讀幫助檔案,然後在一個實際運作的系統中嘗試使用一下每一個菜單和選項。
【使用Process Monitor】
運作Process Monitor需要本地管理者組成員的權限。當你啟動Process Monitor後,它會立刻開始監視三類操作:檔案系統、系統資料庫和程序。
• 檔案系統
Process Monitor顯示Windows檔案系統中的所有檔案系統活動,包括本地存儲器和遠端檔案系統。Process Monitor能夠自動檢測到新添加的檔案系統裝置并且對它們進行監視。所有的檔案系統路徑相對于執行檔案系統操作的使用者會話來顯示。例如,如果使用者A将一個共享路徑映射為驅動器盤符Z:,那麼任何對此共享路徑的通路在Process Monitor中都會顯示為相對于Z:盤的路徑。
在Process Monitor的工具欄上取消“顯示檔案系統活動”按鈕的選擇,就可以從視圖中移除檔案系統操作的記錄,按下這個按鈕又會将檔案系統操作添加回視圖。
• 系統資料庫
Process Monitor記錄所有系統資料庫操作,并使用習慣的縮寫形式來顯示系統資料庫根鍵(例如将HKEY_LOCAL_MACHINE顯示為HKLM)。
在Process Monitor的工具欄上取消“顯示系統資料庫活動”按鈕的選擇,就可以從視圖中移除系統資料庫操作的記錄,按下這個按鈕又會将系統資料庫操作添加回視圖。
• 程序
在程序/線程監視子系統中,Process Monitor跟蹤所有程序和線程的建立和退出操作,以及DLL(動态連結庫)和裝置驅動程式的加載操作。
在Process Monitor的工具欄上取消“顯示程序和線程活動”按鈕的選擇,就可以從視圖中移除程序和線程操作的記錄,按下這個按鈕又會将程序和線程操作添加回視圖。
• 剖析事件
這種事件類型可以在“選項”菜單中啟用。當它被啟用時,Process Monitor掃描系統中所有的活動線程,并為每個線程建立一個剖析事件,記錄它耗費的核心和使用者CPU時間,以及該線程自上次剖析事件以來執行了多少次上下文轉換。注意:在剖析中不包括System程序。
有一些基本選項控制着Process Monitor的基本操作:
捕獲:使用“檔案”菜單中的“捕獲事件”菜單項,工具欄上的“捕獲”按鈕,以及快捷鍵Ctrl+E來切換Process Monitor的捕獲行為。
自動滾動:選擇“編輯”菜單中的“自動滾動”項,工具欄上的“自動滾動”按鈕,以及快捷鍵Ctrl+A來切換Process Monitor的自動滾動行為,以保證最近的操作在視圖中是可見的。
清除:選擇“編輯”菜單中的“清除顯示”菜單項,工具欄上的“清除”按鈕,以及快捷鍵Ctrl+X,可以清除視圖中顯示的所有内容。
【選擇列】
你可以拖動列來重新排列它們的順序。選擇“選項”菜單中的“選擇列”菜單項,打開“列選擇”對話框,你可以在這裡定制要顯示的列。可供選擇的列包括:
應用程式詳細資訊
•程序名 發生事件的程序名稱
• 映像路徑 在程序中運作的映像檔案的完整路徑
• 指令行 啟動程序時所使用的指令行
• 公司名稱 在程序映像檔案中嵌入的公司名稱版本字元串文本,該文本由應用程式開發者所選擇定義
• 描述 在程序映像檔案中嵌入的産品描述字元串文本,該文本由應用程式開發者所選擇定義
• 版本 在程序映像檔案中嵌入的産品版本号,該資訊由應用程式開發者所選擇定義
• 體系架構 應用程式的體系架構(如32位、64位等)
事件詳細資訊
•序号 Process Monitor配置設定給一個特定事件的唯一數字編号
• 事件類 事件的類型(檔案、系統資料庫、程序)
• 操作 特定的事件操作(例如讀取檔案、系統資料庫查詢值等)
• 日期和時間 操作發生的日期和時間
• 時間 僅包括操作發生的時間
• 類别 操作的類别(例如讀取、讀取中繼資料等)
• 路徑 事件引用資源的路徑
• 詳細資訊 事件的額外具體資訊
• 結果 操作完成後傳回的狀态代碼
• 相對時間 相對于Process Monitor啟動時間或上次清除視圖時間的操作時間
• 持續時間 已完成操作的持續時間
程序管理
•使用者名 執行操作的程序運作時所使用的使用者帳号的名稱
•會話ID 執行操作的程序運作時所屬的Windows會話
• 認證ID 執行操作的程序運作時所屬的登入會話
• 程序ID執行操作的程序ID(PID)
• 線程ID執行操作的線程ID(TID)
• 父ID 執行操作的程序的父程序ID
•完整性執行操作的程序運作中的完整性(僅适用于Windows Vista)
•虛拟化 執行操作的程序的虛拟化狀态(僅适用于Windows Vista)
【事件屬性】
你可以通過在事件上輕按兩下滑鼠來檢視某個特定事件的屬性,或者選擇“事件”菜單下的“屬性”菜單項,或者當用右鍵單擊某個事件時,在上下文菜單中選擇“屬性”。“事件屬性”對話框由“事件”、“程序”和“堆棧”三頁組成,你可以使用對話框下方的箭頭按鈕移動到下一個或上一個顯示的或高亮的事件。
事件
“事件”頁顯示某個事件的詳細資訊,包括它的序号、線程、事件類型、操作、結果、時間戳,如果可用的話,還包括資源路徑。隻有檔案系統和系統資料庫兩類事件定義了資源路徑。“事件”頁的下半部分列出了由事件操作所決定的詳細資訊。這些詳細資訊與事件在主視窗的詳細資訊列中所顯示的内容相同,但是每條詳細資訊都顯示為單獨的一行。
程序
事件的“程序”頁顯示關于産生事件的程序的資訊,還包括與程序的映像檔案相關的資料,例如路徑和版本字元串。“程序”頁顯示程序的運作屬性,如程序ID、運作程序的使用者帳号,如果事件發生在64位的Windows系統中,還可以顯示該程序是32位還是64位的。如果程序在Windows Vista系統上運作,Process Monitor可以顯示程序的完整性和是否被虛拟化。
“程序”頁的底部顯示了當程序中的事件發生時,由該程序加載的映像檔案清單和加載它們的記憶體位址。輕按兩下清單中的映像檔案,可以檢視關于該映像檔案的更多資訊,包括它的版本資訊等。
堆棧
“堆棧”頁顯示當事件被記錄時該線程的堆棧。堆棧在判定事件發生的原因和導緻事件發生的元件時很有用。堆棧的核心模式幀在左側以字母K标記,使用者模式幀(僅在32位系統上有效)以字母U标記。如果Process Monitor能夠找到在跟蹤中引用的映像檔案所使用的調試符号,它會嘗試把記憶體位址解析為它們所屬的函數名。如果符号必須從網絡上擷取,例如使用微軟符号伺服器,符号解析會花費一些時間。使用“選項”菜單下的“配置符号”對話框,可以對符号進行設定。
如果你在“配置符号”對話框中指定了一個源檔案的路徑,當行号符号資訊可用并且在你指定的路徑下存在源檔案時,“堆棧”對話框中的“來源”按鈕将對該幀可用。點選“來源”按鈕會打開一個文本檢視器,高亮顯示被引用的源代碼行。
要檢視堆棧跟蹤記錄中關于映像檔案的更多資訊,可以輕按兩下某個幀,或者選擇該幀後點選堆棧跟蹤區下方的“屬性”按鈕。
選擇“事件”菜單下的“堆棧”菜單項,可以打開事件屬性對話框并直接顯示“堆棧”頁。
【過濾和高亮顯示】
Process Monitor提供了幾種不同的方法來配置過濾器和高亮顯示。
包括和排除過濾器
你可以在過濾器中指定事件屬性,Process Monitor将隻顯示或排除與屬性值相比對的事件。所有的過濾器都是非破壞性的,意思是說它們隻影響事件在Process Monitor中的顯示,而不影響事件的基礎資料。
當選擇了一個事件之後,“事件”菜單下的“包括”和“排除”子菜單可以讓你通過簡單地添加一個事件屬性來設定“包括”和“排除”過濾器。例如,想要隻顯示由某個特定名稱的程序執行的事件,就選擇“包括”子菜單下的“程序名”。你還可以選擇多個事件,同時為這些事件中包含的所有唯一值配置屬性過濾器。Process Monitor把與某個特定屬性類型相關的所有過濾器當作“或(OR)”的關系,把不同屬性類型的過濾器當作“與(AND)”的關系。例如,如果你為Notepad.exe和Cmd.exe指定了“包括—程序名”過濾器,并為C:\Windows指定了“包括—路徑”過濾器,Process Monitor将隻顯示來源于Notepad.exe或Cmd.exe,并且指定了C:\Windows目錄的事件。
在“過濾器”對話框中可以使用更複雜的過濾選項,你可以選擇“過濾器”菜單下的“過濾器”菜單項,或者點選工具欄上的“過濾器”按鈕。一個過濾項目包括一個屬性域(如認證ID,程序名等)、一個比較操作符、一個屬性值和一個“保留”或“排除”的過濾類型。為了友善,Process Monitor會自動在下拉清單中列出在已加載的跟蹤資料中出現的屬性值,但是你也可以輸入任意的值。
注意:因為Process Monitor在一個操作完成之前并不知道結果,涉及到結果屬性的過濾器隻能應用于已經收集到的項目。在過濾器被應用之後收集的項目将不受結果屬性過濾器影響。
過濾器上下文菜單
如果你在視圖中的一個項目上單擊滑鼠右鍵,Process Monitor會顯示一個上下文菜單,讓你檢視項目的屬性或設定一個基于項目屬性的過濾器。而且,在菜單中添加了快速過濾器入口,可以根據你的滑鼠點選的列的值建立過濾器。
破壞性過濾
預設情況下,Process Monitor的過濾器應用于顯示的資料,而不是儲存的資料。這使你能夠通過改變過濾器來獲得資料的不同視圖,并且不會影響到被排除的資料。然而,你可以通過選擇“過濾器”菜單下的“忽略已過濾的事件”,将Process Monitor切換到破壞性過濾模式,這樣所有被過濾器排除的資料都會被同時删除。
包含來自視窗的程序
工具欄上有一個形狀像靶子的按鈕,你可以将它拖放到一個視窗上,Process Monitor會将擁有這個視窗的程序的程序ID添加到“包括”過濾器中。
基本和進階模式
“選項”菜單中的“啟用進階輸出”菜單項控制着Process Monitor工作在基本模式還是進階模式。當Process Monitor工作在基本模式下時,它配置了内置的過濾器,從視圖中排除與系統相關的活動,并且使用直覺的名稱來表示内部檔案系統操作。例如,在基本模式下,Process Monitor會把内部的IRP_MJ_READ操作顯示為“讀取檔案”。基本模式使輸出更易讀,并省略了通常與排除應用程式故障無關的事件。
儲存和加載過濾器
當你配置了一個過濾器之後,可以使用“過濾器”菜單下的“儲存過濾器”将其儲存起來。Process Monitor把你儲存的過濾器添加到“加載過濾器”子菜單下以友善通路。打開“過濾器”菜單下的“組織過濾器”對話框,可以重命名或删除已儲存的過濾器,将這些過濾器導出到檔案中儲存,或者從檔案中導入之前儲存的過濾器。
高亮顯示
Process Monitor高亮顯示過濾器允許你指定事件屬性,使事件以高亮顔色顯示。“事件”菜單中的“高亮顯示”子菜單提供了定義高亮顯示過濾器的快速通路入口,在“過濾器”菜單下的“高亮顯示”菜單項将打開“高亮顯示”對話框,它的操作與包括/排除過濾器對話框類似。
【程序樹】
使用“工具”菜單下的“程序樹”菜單項打開“程序樹”對話框,它以層次形式顯示已加載的跟蹤資料所引用的所有程序,反映出他們的父子關系。同一個父程序下的子程序按照它們的啟動時間排序。排列在視窗最左邊的程序的父程序沒有在跟蹤記錄中留下任何事件。
當你在程序樹中選擇了一個程序,對話框底部會顯示出Process Monitor擷取的關于此程序的一部分資料,例如它的映像路徑、使用者帳号、啟動時間。如果要檢視關于此程序的更多資訊,你可以點選“轉到事件”按鈕,這将使Process Monitor選擇并定位到由該程序執行的第一個可見項目。注意,通過使用過濾器從視圖中排除指定程序的所有事件,可以阻止這個操作的完成。
【跟蹤摘要工具】
Process Monitor包含了一系列的對話框,讓你在跟蹤收集的事件中進行簡單的資料挖掘。
唯一值
使用“工具”菜單下相應的菜單項打開“唯一值”對話框,可以讓你看到跟蹤記錄中的事件的不同屬性的唯一值。例如,如果你想快速檢視在跟蹤記錄中引用的所有路徑,在下拉清單中選擇“路徑”。
在顯示的值上輕按兩下,或者點選“過濾器”按鈕,可以将目前選擇的值添加到“包括”過濾器。
統計出現次數
在“工具”菜單下打開“出現次數”對話框,它顯示你指定的屬性類型在跟蹤記錄中可見的唯一值,連同在跟蹤記錄中包含這個值的事件出現的次數。
程序活動摘要
這個對話框概括了在跟蹤資料中可見的程序,包括它們的程序ID、映像檔案名和指令行等資訊。
檔案摘要
“檔案摘要”對話框列出了過濾後的跟蹤記錄中每一個唯一的檔案系統路徑,對該檔案執行I/O操作所花費的時間,引用這個路徑的事件總數,并分别計算不同類型的操作的數量。
系統資料庫摘要
“系統資料庫摘要”對話框列出了過濾後的跟蹤記錄中每一個唯一的系統資料庫路徑,對該系統資料庫路徑執行I/O操作所花費的時間,引用這個路徑的事件總數,并分别計算不同類型的操作的數量。
堆棧摘要
使用“堆棧摘要”對話框檢視每個程序的堆棧跟蹤記錄的執行個體,包括堆棧跟蹤發生的次數和同一個跟蹤記錄中的事件花費的總時間。
【選項】
“選項”菜單中的一些設定可改變Process Monitor的行為。
啟用進階輸出
這個選項控制内置的進階操作過濾器,在“過濾和高亮顯示”一節中已經描述過了。
字型
這個選項打開字型選擇對話框,你可以選擇Process Monitor用來顯示的字型。
高亮顔色
這個菜單項打開一個對話框,可以選擇文字和背景的顔色,Process Monitor用它們來顯示與高亮顯示過濾器相比對的項目。
配置符号
如果符号資訊可用的話,Process Monitor能夠用它來顯示事件堆棧所引用的函數名稱。你可以在Microsoft Debugging Tools for Windows網站上找到關于配置符号的資訊。
曆史記錄深度
Process Monitor監視着已送出的記憶體使用,當虛拟記憶體過低時它會将自身關閉。但是“曆史記錄深度”對話框可以讓你限制它保留的項目數量,是以你能讓Process Monitor長期運作并保證它保留了最新的事件。
【儲存和日志】
檔案格式
你可以使用“檔案”菜單中的“儲存”菜單項,将Process Monitor的資料儲存為原生格式(PML)、逗号分隔的值(CSV),或者XML格式。PML格式儲存了捕獲到的所有資料,是以你可以把它重新加載進同一個系統或不同系統中的Process Monitor。CSV檔案可用于導入到Excel或其他資料分析應用程式。最後,XML格式的資料可以被操作XML的工具所解析。
日志
預設情況下,Process Monitor使用虛拟記憶體來儲存捕獲到的資料。使用“檔案”菜單下的“後備檔案”對話框,可以配置Process Monitor将捕獲的資料儲存在磁盤上的檔案中。啟用這個選項後,Process Monitor會在捕獲資料的同時以原生的PML格式将日志資料儲存到磁盤上。
“後備檔案”對話框還會顯示診斷資訊,包括已捕獲的事件數量、程序數量等資訊和捕獲線程的加載狀态。
【引導日志】
Process Monitor能夠在啟動裝置驅動程式初始化時,從引導程序中很早的一個時刻開始記錄活動。選擇“選項”菜單下的“啟用引導日志”,可以配置Process Monitor在下次系統引導時記錄日志。Process Monitor的驅動程式将會在下次系統引導時将活動日志記錄到%Windir%目錄下,并繼續記錄日志,直到關機或者你再次運作Process Monitor。是以,如果你在啟動期間不運作Process Monitor,你将捕獲到從開機到關機的整個周期的跟蹤記錄。
當你運作Process Monitor時,它檢視之前是否生成了一個引導日志,如果是的話,會詢問你想要把處理過的引導日志輸出檔案放在哪裡。當轉換完成後,Process Monitor将顯示跟蹤記錄。如果要檢視引導過程早期的唯一程序——System程序的活動,需要在“過濾器”菜單中選擇“啟用進階輸出”。
如果你設定了啟用引導日志,而系統在引導過程的初期崩潰了,你可以通過在Windows啟動菜單(在引導過程中按F8鍵)中選擇“最近一次的正确配置”來取消引導日志。
【指令行選項】
Process Monitor支援一些指令行選項:
/Openlog <儲存的PML日志檔案>
讓Process Monitor直接打開并加載指定的日志檔案。
/Backingfile <日志檔案名>
讓Process Monitor建立并使用指定的檔案名作為日志檔案。
/Pagingfile
将事件儲存到虛拟記憶體中。
/Noconnect
當此标記存在時,Process Monitor不會自動開始記錄活動。
/Nofilter
啟動時清除過濾器。
/AcceptEula
自動接受并跳過最終使用者許可協定(EULA)對話框。
/Profiling
啟用線程剖析事件類。
/Minimized
啟動Process Monitor時最小化視窗到工作列。
/WaitForIdle
等待Process Monitor執行個體準備完畢。
/Terminate
終止Process Monitor的所有執行個體并退出。
/Quiet
在啟動時不确認過濾器設定。
/Run32
使用這個開關在64位的Windows上運作32位版本的Process Monitor,用來打開在32位系統上建立的日志。
/HookRegistry
這個開關隻在32位的Vista和Server 2008上有效,它讓Process Monitor使用系統調用鈎子代替系統資料庫回調機制,來監視系統資料庫的活動。這使它能夠在這些作業系統上看到SoftGrid虛拟系統資料庫操作。這個選項必須在Process Monitor在系統中第一次運作時使用,并且僅用于SoftGrid應用程式的故障排除。
【編寫Process Monitor腳本】
你可以在批處理檔案中使用Process Monitor指令行選項。例如要跟蹤捕獲notepad.exe的執行過程,批處理檔案應該像下面這樣寫(譯者注:可以将此腳本儲存成.cmd或.bat檔案):
set PM=C:\sysint\procmon.exe
start %PM% /quiet /minimized /backingfile C:\temp\notepad.pml
%PM% /waitforidle
notepad.exe
%PM% /terminate
對Process Monitor的第一次調用使用了start以確定程序脫離控制台視窗,這使它能夠與後面的指令并行運作。第二次調用帶有/WaitForIdle,可以使批處理檔案暫停執行,直到第一個執行個體啟動完畢并開始捕獲事件。最後一次調用帶有/Terminate,讓第一個執行個體停止捕獲,送出所有未儲存的資料到後備檔案并幹淨退出。
---------------------------------------分-----隔-----線---------------------------------------
好了,看完了上面的幫助文檔,是不是對它的功能基本有了一些了解?下面我再以wbpluto漢化版為例,介紹一下在Process Monitor的使用中需要注意的一些問題。
當你下載下傳了Process Monitor之後,把下載下傳的壓縮包解開,無需安裝直接運作Procmon.exe即可。當程式第一次啟動時,會顯示一個使用者許可協定視窗,點選“同意”按鈕,以後它就不會再出現了。

由于軟體原版是英文的,其預設設定的字型對中文來說比較小,我們首先在“選項”菜單下的“字型”對話框中,将顯示的字型改為“宋體”,字号“小五”,這樣就看得比較清晰了。
程式啟動之後就會自動開始捕獲事件,接下來的具體操作參考上面的幫助文檔就可以了。
該軟體的設定資訊儲存在系統資料庫的以下鍵值中,如果想恢複其預設設定,将此鍵删除即可(系統資料庫操作有風險,不了解的使用者請勿随便删除)。 HKEY_CURRENT_USER\Software\Sysinternals\Process Monitor 下面說一說在Process Monitor中使用調試符号的方法,對于一般使用者來說,這個功能用處不是很大,但是對于有程式設計經驗和對系統底層操作感興趣的人來說,這是一個挺實用的功能,它能夠把線程堆棧中的16進制位址轉換為有意義的名稱,更友善判定問題發生的原因。 要使用這個功能,首先需要相關的符号檔案。如果要調試你自己開發的程式,使用編譯程式時生成的符号檔案就可以了。如果要調試Windows的元件,就需要下載下傳Windows Symbol Packages,但是這個庫有幾百兆大小,如果不是經常使用的話,最好是使用Microsoft Symbol Server,它可以根據需要線上下載下傳符号資訊。 我們需要先在本地硬碟上建立一個目錄來儲存将要下載下傳的符号資訊,如C:\localsymbols,然後在Process Monitor的“選項”菜單下的“配置符号”對話框中,填入下面的符号路徑: SRV*C:\localsymbols*http://msdl.microsoft.com/download/symbols
但是這樣還不夠,因為WindowsXP自帶的調試工具幫助程式dbghelp.dll不支援從網絡下載下傳符号資訊,是以還需要安裝微軟的Debugging Tools for Windows工具,在以下位址下載下傳适合你的作業系統的版本: http://www.microsoft.com/whdc/devtools/debugging/default.mspx 如果裝完後出現無效的DLL版本錯誤,就在“配置符号”對話框中将dbghelp.dll檔案指向Debugging Tools for Windows安裝路徑下的同名檔案即可。 好了,關于Process Monitor就介紹到這裡,也許你不會立刻用到它,但是當你遇到軟體問題時,不妨試試這個小而強大的工具(小強~我找你找得好苦啊~
)。