閱讀英文

共用方式為


ProcDump v11.0

By Mark Russinovich and Andrew Richards

已發行:2022 年 11 月 3 日

下載下載 ProcDump (714 KB)

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

使用 ZoomIt 建立

簡介

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

使用 ProcDump

擷取使用量:

Windows 命令提示字元
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, ...]}
            }

安裝使用方式:

Windows 命令提示字元
procdump.exe -i [Dump_Folder]
            [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-r]
            [-at <Timeout>]
            [-k]
            [-wer]

解除安裝使用方式:

Windows 命令提示字元
procdump.exe -u

傾印類型:

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

條件:

條件 描述
-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

支援下列替代項目:

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

範例

  • 撰寫名為 'notepad' 的程序 Mini 傾印 (只有一個相符專案可以存在):

    Windows 命令提示字元
    C:\>procdump notepad
    
  • 使用 PID '4572' 撰寫程序 Full 傾印:

    Windows 命令提示字元
    C:\>procdump -ma 4572
    
  • 請先撰寫 Mini,然後使用 PID '4572' 撰寫程序 Full 傾印進程:

    Windows 命令提示字元
    C:\>procdump -mm -ma 4572
    
  • 在名為 'notepad' 的程序之外,撰寫 3 個 Mini 傾印 5 秒:

    Windows 命令提示字元
    C:\>procdump -n 3 -s 5 notepad
    
  • 在超過 20% CPU 使用量 5 秒時,最多寫入 3 個名為 'consume' 的程序 Mini 傾印:

    Windows 命令提示字元
    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • 當其中一個視窗沒有回應超過 5 秒時,寫入名為 'hang.exe' 的程序 Mini 傾印:

    Windows 命令提示字元
    C:\>procdump -h hang.exe
    
  • 當其中一個視窗沒有回應超過 5 秒時,寫入名為 'hang.exe' 的程序 Full 和 Kernel 傾印:

    Windows 命令提示字元
    C:\>procdump -ma -mk -h hang.exe
    
  • 當系統 CPU 使用量總計超過 20% 10 秒時,寫入名為 'outlook' 的程序 Mini 傾印:

    Windows 命令提示字元
    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • 當 Outlook 的控制代碼計數超過 10,000 時,寫入名為 'outlook' 的程序 Full 傾印:

    Windows 命令提示字元
    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • 當控制代碼計數超過 10,000 時,寫入 'svchost' PID 1234 執行個體 #87 的 Full 傾印:

    Windows 命令提示字元
    C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
    

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

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

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

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

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

    pwsh
    Get-Counter -Counter "\Process(*)\ID Process"
    
  • 寫入第 2 次機會例外狀況的 Full 傾印:

    Windows 命令提示字元
    C:\>procdump -ma -e w3wp.exe
    
  • 寫入第1 次或第 2 次機會例外狀況的 Full 傾印:

    Windows 命令提示字元
    C:\>procdump -ma -e 1 w3wp.exe
    
  • 寫入偵錯字串訊息的 Full 傾印:

    Windows 命令提示字元
    C:\>procdump -ma -l w3wp.exe
    
  • 寫入最多 10 個 w3wp.exe 第 1 次或第 2 次機會例外狀況的 Full 傾印:

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

    Windows 命令提示字元
    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • 如果偵錯字串訊息包含 'NotFound',則最多寫入 10 個 Full 傾印:

    Windows 命令提示字元
    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • 等候稱為 'notepad' 的程序 (並監視其是否有例外狀況):

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

    Windows 命令提示字元
    C:\>procdump -e -x c:\dumps notepad
    
  • 註冊啟動,並嘗試啟動存放區 'application'。 啟動時將會啟動新的 ProcDump 執行個體:

    Windows 命令提示字元
    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • 註冊以啟動存放區 'package'。 (手動) 啟動時將會啟動新的 ProcDump 執行個體:

    Windows 命令提示字元
    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • 當 Microsoft Exchange 資訊存放區有未處理的例外狀況時,請撰寫 MiniPlus 傾印:

    Windows 命令提示字元
    C:\>procdump -mp -e store.exe
    
  • 顯示時未寫入傾印,w3wp.exe 的例外狀況代碼/名稱:

    Windows 命令提示字元
    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0;使用反映 (Reflection) 減少 5 個連續觸發程序的中斷:

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

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

    Windows 命令提示字元
    C:\>procdump -ma -i c:\dumps
    

    ..或..

    Windows 命令提示字元
    C:\Dumps>procdump -ma -i
    
  • 解除安裝作為 (AeDebug) 事後剖析偵錯工具的 ProcDump:

    Windows 命令提示字元
    C:\>procdump -u
    

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

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

下載下載 ProcDump (714 KB)

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

執行於:

  • 用戶端:Windows 8.1 及更高版本。
  • 伺服器:Windows Server 2012 和更新版本。

深入了解