ProcDump v12.0

作者:馬克·魯西諾維奇和安德魯·理查茲

發布日期:2026年5月7日

下載 下載 ProcDump(1.2 MB)

下載適用於 Linux 的 ProcDump (GitHub)
下載 ProcDump for Mac (GitHub)

使用 ZoomIt 建立

簡介

ProcDump 是命令列工具,其主要目的是監視應用程式是否有 CPU 使用率尖峰,並在尖峰時產生崩潰傾印檔,讓系統管理員或開發人員可用來判斷尖峰的原因。 ProcDump 也包含無回應視窗監視 (使用 Windows 和工作管理員所使用視窗停止回應的相同定義)、未處理的例外狀況監視,而且可以根據系統效能計數器的值產生傾印。 也可用作通用的進程傾印工具,可嵌入在其他指令碼中。

使用 ProcDump

擷取使用量:

procdump.exe [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-n <Count>]
            [-s <Seconds>]
            [-c|-cl <CPU_Usage> [-u]]
            [-m|-ml <Commit_Usage>]
            [-p|-pl <Counter> <Threshold>]
            [-h]
            [-e [1] [-g] [-b] [-ld] [-ud] [-ct] [-et]]
            [-l]
            [-t]
            [-f  <Include_Filter>, ...]
            [-fx <Exclude_Filter>, ...]
            [-dc <Comment>]
            [-o]
            [-r [1..5] [-a]]
            [-at <Timeout>]
            [-wer]
            [-64]
            {
                {{[-w] <Process_Name> | <Service_Name> | <PID>} [<Dump_File> | <Dump_Folder>]}
            |
                {-x <Dump_Folder> <Image_File> [Argument, ...]}
            }

安裝使用方式:

procdump.exe -i [Dump_Folder]
            [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-r]
            [-at <Timeout>]
            [-k]
            [-wer]

解除安裝使用方式:

procdump.exe -u

傾印類型:

轉儲類型 描述
-mm 寫入迷你轉儲檔案。 (預設值)
- 包含直接或間接參考的記憶體 (堆疊及其參考的內容)。
- 包含所有中介資料 (進程、執行緒、模組、句柄、位址空間等)。
-ma 寫入 'Full' 傾印檔案。
- 包含所有記憶體(影像、映射及私有)。
- 包含所有中繼資料 (程序、執行緒、模組、控制代碼、位址空間等)。
-mt 寫入 'Triage' 傾印檔案。
- 包含直接參考的記憶體 (堆疊)。
- 包含有限的中繼資料 (程序、執行緒、模組和控制代碼)。
- 嘗試移除敏感性資訊,但是不保證。
-mp 寫入 'MiniPlus' 傾印檔案。
- 包含所有私有記憶體和所有可讀寫影像或映射記憶體。
- 包含所有中繼資料(程序、執行緒、模組、句柄、位址空間等)。
- 若要將大小降到最低,會排除超過 512MB 的最大私人記憶體區域。
  記憶體區域會定義為相同大小記憶體配置的總和。
  傾印與 Full 傾印一樣詳細,但是大小為 10%-75%。
- 注意:由於偵錯限制,CLR 進程會以 Full (-ma) 模式傾印。
-mc 寫入 'Custom' 傾印檔案。
- 包含指定 MINIDUMP_TYPE 掩碼所定義的記憶體和中繼資料 (十六進位)。
-md 寫入 'Callback' 轉儲檔案。
- 包含由指定 DLL 之名為 MiniDumpWriteDumpMiniDumpCallbackRoutine 回呼常式所定義的記憶體。
- 包含所有中繼資料(程序、執行緒、模組、控制柄、位址空間等)。
-mk 同時寫入 'Kernel' 傾印檔案。
- 包含於進程中的執行緒之核心堆疊。
- 作業系統在使用克隆 (-mk) 時不支援核心傾印 (-r)。
- 使用多個傾印大小時,會針對每個傾印大小採用核心傾印。

條件:

條件 描述
-a 避免中斷。 需要 -r。 如果觸發條件會導致目標因超過最大並行核心匯出限制而長時間暫停,則會略過觸發條件。
-at 避免在逾時時中斷。 在 N 秒時取消觸發器的集合。
-b 將偵錯中斷點視為例外狀況 (否則忽略它們)。
-c 高於該值就建立程序傾印的 CPU 閾值。
-cl 低於該值就建立程序傾印的 CPU 閾值。
-dc 將指定的字串新增至產生的傾印註解。
-e 當進程遇到未處理的例外狀況時,生成傾印檔。
包含 1 以在第一次發生例外狀況時建立傾印。
新增 -ld 以在載入 DLL (模組) 時建立傾印 (套用篩選)。
新增 -ud 以在卸載 DLL (模組) 時建立傾印 (套用篩選)。
新增 -ct 以在建立執行緒時產生傾印檔案。
新增 -et 以在執行緒退出時建立轉存。
-f 在 DLL 載入/卸載時篩選 (包含) 例外狀況內容、偵錯記錄和檔案名稱。 支援萬用字元 (*)。
-fx 在 DLL 載入/卸載時篩選 (排除) 例外狀況內容、偵錯記錄和檔案名稱。 支援萬用字元 (*)。
-g 在受控程序中以原生偵錯工具的形式執行 (沒有 Interop)。
-h 如果程序有無回應視窗 (至少 5 秒未回應視窗訊息),則寫入傾印。
-k 在完成複製 (-r) 後或在轉存資料收集結束時終止進程。
-l 顯示程序的偵錯記錄。
-m 記憶體認可閾值 (以 MB 為單位),達到該值則建立傾印。
-ml 當記憶體認可低於指定的 MB 值時觸發。
-n 結束之前要寫入的轉儲數目。
-o 覆寫現有的轉存文件。
-p 當效能計數器達到或超過指定的閾值時觸發。 某些計數器和/或執行個體名稱可能會區分大小寫。
-pl 當效能計數器低於指定的閾值時觸發。
-r 使用克隆轉存。 並行限制是選擇性的 (預設值為 1,最大值為 5)。 使用複製 (-r) 時作業系統不支援核心傾印 (-mk)。 注意:高並行值可能會影響系統效能。
- Windows 7:使用反射 (Reflection)。 作業系統不支援 -e
- Windows 8.0:使用反映 (Reflection)。 作業系統不支援 -e
- Windows 8.1+:使用 PSS。 支援所有觸發程序類型。
-s 寫入傾印前的連續秒數 (預設值為 10)。
-t 當程序終止時,寫入記憶體傾印。
-u 將 CPU 使用量視為與單一核心相關 (搭配 -c 使用)。
-v 僅供除錯使用:詳細輸出。
-w 如果指定的程序未執行,請等候程序啟動。
-wer 將 (最大) 傾印排入 Windows 錯誤報告的佇列。
-x 使用選擇性引數啟動指定的映像。 如果是市集應用程式或套件,ProcDump 將會在下一次啟用時啟動 (僅限)。
-y 隱藏:市集應用程式啟用。
-64 根據預設,ProcDump 會在 64 位元 Windows 上執行時擷取 32 位元程序的 32 位元傾印。 此選項可覆蓋原設定以產生 64 位元轉儲。 僅適用於 WOW64 子系統偵錯。

授權合約:

使用 -accepteula 命令列選項自動接受 Sysinternals 授權合約。

自動終止:

-cancel <Target Process PID>

使用此選項或設定名稱為 ProcDump-<PID> 的事件,與輸入 Ctrl+C 相同,以正常終止 ProcDump。 優雅終止確保在擷取處於活動狀態時,程序可以恢復。 取消適用於所有監視程序的 ProcDump 執行個體。

檔案名稱

預設傾印檔案名稱:PROCESSNAME_YYMMDD_HHMMSS.dmp

支援下列替代項目:

替換 說明
PROCESSNAME 程序名稱
PID 處理序識別碼
EXCEPTIONCODE(例外代碼) 例外狀況程式碼
YYMMDD 年/月/日
HHMMSS 小時/分鐘/秒

範例

  • 生成名為 'notepad' 的進程小型傾印(僅能存在一個相符項目):

    C:\>procdump notepad
    
  • 使用 PID '4572' 寫入完整傾印:

    C:\>procdump -ma 4572
    
  • 請先建立一個Mini匯出,然後建立一個具有 PID '4572' 的進程的Full匯出:

    C:\>procdump -mm -ma 4572
    
  • 生成三個間隔五秒的名為 'notepad' 的進程的小型轉儲檔案:

    C:\>procdump -n 3 -s 5 notepad
    
  • 當一個名為 'consume' 的程序在 CPU 使用率超過 20% 並持續五秒時,寫入最多 3 個迷你轉儲。

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • 當名為「hang.exe」的進程中有一個視窗無回應超過5秒時,生成該進程的迷你轉儲。

    C:\>procdump -h hang.exe
    
  • 對於名為 'hang.exe' 的程序,當其中一個視窗超過 5 秒無回應時,生成完整記憶體及核心記憶體傾印:

    C:\>procdump -ma -mk -h hang.exe
    
  • 當系統 CPU 使用量總計超過 20% 且持續 10 秒時,寫入名為 'outlook' 的程序的迷你傾印:

    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • 當 Outlook 的控制代碼計數超過 10,000 時,為名為 'outlook' 的程序寫入完整轉儲:

    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • 當 Handle 數量超過 10,000 時,生成 'svchost' PID 1234 執行個體 #87 的完整轉儲:

    C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
    

    注意:多個執行個體計數器
    如果有多個計數器實例,您必須包含「名稱」和/或「實例編號」。

    \Processor(NNN)\% Processor Time
    \Thermal Zone Information(<name>)\Temperature
    \Process(<name>[#NNN])\<counter>
    

    較舊的作業系統會要求您附加 \Process 計數器的 PID。

    \Process(<name>[_PID])\<counter>
    

    提示:使用「效能監視器」來檢視計數器 (esp. 區分大小寫)。
    提示:針對 \Process(*) 型計數器,請使用 PowerShell 將 PID 對應至其 #NNN

    Get-Counter -Counter "\Process(*)\ID Process"
    
  • 寫入二次機會例外的完整轉儲:

    C:\>procdump -ma -e w3wp.exe
    
  • 為第一次或第二次機會例外狀況寫入完整轉儲:

    C:\>procdump -ma -e 1 w3wp.exe
    
  • 生成除錯字串訊息的完整轉儲:

    C:\>procdump -ma -l w3wp.exe
    
  • 輸出或寫入不超過 10 個 w3wp.exe 的一級或二級機會例外的完整傾印:

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • 如果例外狀況的程式碼/名稱/訊息包含 'NotFound',則最多寫入 10 個完整傾印:

    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • 如果偵錯字串訊息包含 'NotFound',則最多寫入 10 個完整轉儲:

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • 等待一個名為 'notepad' 的進程(並監控其是否有例外):

    C:\>procdump -e -w notepad
    
  • 啟動稱為 'notepad' 的程序 (並監視其是否有例外狀況):

    C:\>procdump -e -x c:\dumps notepad
    
  • 註冊啟動,並嘗試開啟商店應用程式。 啟動時將會啟動新的 ProcDump 執行個體:

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • 註冊以啟動商店套餐。 (手動) 啟動時將會啟動新的 ProcDump 執行個體:

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • 當 Microsoft Exchange 資訊存放區發生未處理的例外狀況時,請撰寫 MiniPlus Dump 傾印檔案:

    C:\>procdump -mp -e store.exe
    
  • 在未生成傾印的情況下,顯示 w3wp.exe 的例外狀況代碼/名稱:

    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0;使用反射 (Reflection) 來減少 5 個連續觸發事件的中斷:

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+;使用 PSS 減少 5 個並行觸發程序的中斷:

    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • 將 ProcDump 安裝為 (AeDebug) 事後剖析偵錯工具:

    C:\>procdump -ma -i c:\dumps
    

    ..或..

    C:\Dumps>procdump -ma -i
    
  • 解除安裝作為 (AeDebug) 事後偵錯程式的 ProcDump:

    C:\>procdump -u
    

請參閱範例命令列清單 (範例如上所列):

C:\>procdump -? -e
  • [Windows Internals Book] 關於 Windows Internals 的權威書籍的官方更新和勘誤頁面 (作者為 Mark Russinovich 和 David Solomon)。
  • Windows Sysinternals Administrator's Reference 由 Mark Russinovich 和 Aaron Margosis 撰寫的 Sysinternals 公用程式官方指南,包含所有工具的描述、其功能、如何使用這些工具進行疑難排解,以及其真實的使用案例範例。

下載 下載 ProcDump(1.2 MB)

下載適用於 Linux 的 ProcDump (GitHub)
下載 ProcDump for Mac (GitHub)

執行於:

  • 客戶端:Windows 11 及更高版本。
  • 伺服器:Windows Server 2016 和更新版本。

深入了解