訓練
模組
使用 App Service 診斷對 Web 應用程式關閉案例進行疑難排解 - Training
利用 Web 應用程式關閉、損毀監視和 Ask Genie 來進行疑難排解。 使用這些工具來監視應用程式和平台的可用性、找出未處理的例外狀況、擷取記憶體傾印和呼叫堆疊,並尋找調查和診斷的區域。
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.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 | 寫入 'Mini' 傾印檔案。 (預設值) - 包含直接或間接參考的記憶體 (堆疊及其參考的內容)。 - 包含所有中繼資料 (程序、執行緒、模組、控制代碼、位址空間等)。 |
-ma | 寫入 'Full' 傾印檔案。 - 包含所有記憶體 (映像、對應和私人)。 - 包含所有中繼資料 (程序、執行緒、模組、控制代碼、位址空間等)。 |
-mt | 寫入 'Triage' 傾印檔案。 - 包含直接參考的記憶體 (堆疊)。 - 包含有限的中繼資料 (程序、執行緒、模組和控制代碼)。 - 嘗試移除敏感性資訊,但是不保證。 |
-mp | 寫入 'MiniPlus' 傾印檔案。 - 包含所有私人記憶體和所有讀取/寫入映像或對應記憶體。 - 包含所有中繼資料 (程序、執行緒、模組、控制代碼、位址空間等)。 - 若要將大小降到最低,會排除超過 512MB 的最大私人記憶體區域。 記憶體區域會定義為相同大小記憶體配置的總和。 傾印與 Full 傾印一樣詳細,但是大小為 10%-75%。 - 注意:由於偵錯限制,CLR 程序會傾印為 Full (-ma)。 |
-mc | 寫入 'Custom' 傾印檔案。 - 包含指定 MINIDUMP_TYPE 遮罩所定義的記憶體和中繼資料 (十六進位)。 |
-md | 寫入 'Callback' 傾印檔案。 - 包含由指定 DLL 之名為 MiniDumpCallbackRoutine 的 MiniDumpWriteDump 回呼常式所定義的記憶體。- 包含所有中繼資料 (程序、執行緒、模組、控制代碼、位址空間等)。 |
-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 傾印 (只有一個相符專案可以存在):
C:\>procdump notepad
使用 PID '4572' 撰寫程序 Full 傾印:
C:\>procdump -ma 4572
請先撰寫 Mini,然後使用 PID '4572' 撰寫程序 Full 傾印進程:
C:\>procdump -mm -ma 4572
在名為 'notepad' 的程序之外,撰寫 3 個 Mini 傾印 5 秒:
C:\>procdump -n 3 -s 5 notepad
在超過 20% CPU 使用量 5 秒時,最多寫入 3 個名為 'consume' 的程序 Mini 傾印:
C:\>procdump -n 3 -s 5 -c 20 consume
當其中一個視窗沒有回應超過 5 秒時,寫入名為 'hang.exe' 的程序 Mini 傾印:
C:\>procdump -h hang.exe
當其中一個視窗沒有回應超過 5 秒時,寫入名為 'hang.exe' 的程序 Full 和 Kernel 傾印:
C:\>procdump -ma -mk -h hang.exe
當系統 CPU 使用量總計超過 20% 10 秒時,寫入名為 'outlook' 的程序 Mini 傾印:
C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
當 Outlook 的控制代碼計數超過 10,000 時,寫入名為 'outlook' 的程序 Full 傾印:
C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
當控制代碼計數超過 10,000 時,寫入 'svchost' PID 1234 執行個體 #87 的 Full 傾印:
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"
寫入第 2 次機會例外狀況的 Full 傾印:
C:\>procdump -ma -e w3wp.exe
寫入第1 次或第 2 次機會例外狀況的 Full 傾印:
C:\>procdump -ma -e 1 w3wp.exe
寫入偵錯字串訊息的 Full 傾印:
C:\>procdump -ma -l w3wp.exe
寫入最多 10 個 w3wp.exe 第 1 次或第 2 次機會例外狀況的 Full 傾印:
C:\>procdump -ma -n 10 -e 1 w3wp.exe
如果例外狀況的程式碼/名稱/訊息包含 'NotFound
',則寫入最多 10 個 Full 傾印:
C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
如果偵錯字串訊息包含 'NotFound
',則最多寫入 10 個 Full 傾印:
C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
等候稱為 'notepad' 的程序 (並監視其是否有例外狀況):
C:\>procdump -e -w notepad
啟動稱為 'notepad' 的程序 (並監視其是否有例外狀況):
C:\>procdump -e -x c:\dumps notepad
註冊啟動,並嘗試啟動存放區 'application'。 啟動時將會啟動新的 ProcDump 執行個體:
C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
註冊以啟動存放區 'package'。 (手動) 啟動時將會啟動新的 ProcDump 執行個體:
C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
當 Microsoft Exchange 資訊存放區有未處理的例外狀況時,請撰寫 MiniPlus 傾印:
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
下載 ProcDump (714 KB)
下載適用於 Linux 的 ProcDump (GitHub)
下載 ProcDump for Mac (GitHub)
執行於:
訓練
模組
使用 App Service 診斷對 Web 應用程式關閉案例進行疑難排解 - Training
利用 Web 應用程式關閉、損毀監視和 Ask Genie 來進行疑難排解。 使用這些工具來監視應用程式和平台的可用性、找出未處理的例外狀況、擷取記憶體傾印和呼叫堆疊,並尋找調查和診斷的區域。