監視無訊息進程結束
從 Windows 7 開始,您可以使用 GFlags 中的 [無訊息進程結束 ] 索引標籤,輸入您要監視無訊息結束的進程名稱。
在此監視功能的內容中,我們使用 無訊息結束 一詞,表示受監視的進程會以下列其中一種方式終止。
自我終止
受監視的進程會藉由呼叫 ExitProcess自行終止。
跨進程終止
第二個進程會藉由呼叫 TerminateProcess終止受監視的進程。
監視功能不會偵測到進程最後一個執行緒結束時發生的一般進程終止。 監視功能不會偵測由核心模式程式碼起始的進程終止。
若要註冊無訊息結束監視的程式,請在 GFlags 中開啟 [無訊息進程結束 ] 索引標籤。 輸入進程名稱作為 影像 ,然後按 Tab 鍵。 核取 [ 啟用無訊息進程結束監視] 方塊,然後選取 [ 套用]。 這會在下列登錄專案中設定FLG_MONITOR_SILENT_PROCESS_EXIT旗標。
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ProcessName\GlobalFlag
如需此旗標的詳細資訊,請參閱 啟用無訊息進程結束監視。
如需在 GFlags 中使用 [無訊息進程結束 ] 索引標籤的詳細資訊,請參閱 設定無訊息進程結束監視。
在 GFlags 的 [ 無訊息進程結束 ] 索引標籤中,您可以設定當受監視的進程以無訊息方式結束時所發生的動作。 您可以設定通知、事件記錄,以及建立傾印檔案。 您可以指定偵測到無訊息結束時將啟動的進程,而且您可以指定監視器將忽略的模組清單。 這些設定有數個可供全域和個別應用程式使用。 全域設定會套用至您註冊無訊息結束監視的所有進程。 應用程式設定會套用至個別進程並覆寫全域設定。
全域設定會儲存在登錄的下列機碼下。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit
應用程式設定會儲存在登錄的下列機碼下。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\ProcessName
報告模式
[報告模式] 設定可作為應用程式設定,但無法作為全域設定。 您可以使用下列核取方塊來設定報告模式。
啟動監視程式啟用傾印收集 啟用通知ReportingMode 登錄專案是下列旗標的位 OR。
旗標 | 值 | 意義 |
---|---|---|
LAUNCH_MONITORPROCESS | 0x1 | 偵測到無訊息結束時,就會啟動 [ 監視進程 ] 方塊中指定的監視進程) (。 |
LOCAL_DUMP | 0x2 | 偵測到無訊息結束時,會針對受監視的進程建立傾印檔案。 在跨進程終止的情況下,也會針對造成終止的進程建立傾印檔案。 |
通知 | 0x4 | 偵測到無訊息結束時,會顯示快顯通知。 |
忽略自我結束
[忽略自我結束] 設定可作為應用程式設定,但無法作為全域設定。 您可以使用 [忽略自我結束 ] 核取方塊來指定是否忽略自我結束。
IgnoreSelfExits登錄專案具有下列其中一個值。
值 | 意義 |
---|---|
0x0 | 偵測並回應自我終止和跨進程終止。 |
0x1 | 忽略自我終止。 偵測並回應跨進程終止。 |
監視程式
您可以在 [ 監視進程 ] 文字方塊中輸入進程名稱以及命令列參數,以指定監視進程。 您可以在命令列中使用下列變數。
Varaible | 意義 |
---|---|
%e | 結束進程的識別碼。 這是以無訊息方式結束的受監視進程。 |
%i | 起始進程的識別碼。 在自我終止的情況下,這與結束程式相同。 在跨進程終止的情況下,這是造成終止之進程的識別碼。 |
%t | 起始執行緒的識別碼。 這是造成終止的執行緒。 |
%c | 傳遞至 ExitThread 或 TerminateThread 的狀態碼。 |
例如, 下列監視進程 值會指定在無訊息結束時,WinDbg 會啟動並附加至結束進程。
windbg -p %e
Monitor Process命令列會儲存在MonitorProcess登錄專案中。
傾印資料夾位置
您可以使用 [傾印 資料夾位置] 文字方塊來指定偵測到無訊息結束時所寫入傾印檔案的位置。
您針對 Dump 資料夾位置 輸入的字串會儲存在 LocalDumpFolder 登錄專案中。
如果您未指定傾印資料夾位置,傾印檔案會寫入預設位置,也就是 %TEMP%\無訊息進程結束。
傾印資料夾大小
您可以使用 [傾印 資料夾大小] 文字方塊來指定可寫入傾印資料夾的傾印檔案數目上限。 將此值輸入為十進位整數。
您針對 Dump 資料夾大小 輸入的值會儲存在 MaxNumberOfDumpFiles 登錄專案中。
根據預設,可以寫入的傾印檔案限制為 10 個。
傾印類型
您可以使用 [傾印 類型 ] 下拉式清單,指定偵測到無訊息結束時所寫入的傾印檔案類型 (Micro、Mini、Heap 或 Custom) 。
傾印類型會儲存在 DumpType 登錄專案中,這是 MINIDUMP_TYPE 列舉成員的位 OR。 此列舉定義于 dbghelp.h 中,包含在 Windows 套件的偵錯工具中。
例如,假設您選擇 Micro的傾印類型,您會看到 DumpType 登錄專案具有 0x88 的值。 值0x88為下列兩個 MINIDUMP_TYPE 列舉值的位 OR。
MiniDumpFilterModulePaths:0x00000080
MiniDumpFilterMemory:0x00000008
如果您選擇[自訂] 的傾印類型,請在 [自訂傾印類型] 方塊中輸入您自己的位 OR MINIDUMP_TYPE列舉值。 將此值輸入為十進位整數。
模組忽略清單
您可以使用 [ 模組忽略清單 ] 方塊來指定偵測到無訊息結束時將忽略的模組清單。 如果受監視的進程由此清單中的其中一個模組終止,則會忽略無訊息結束。
您在 [ 模組忽略清單 ] 方塊中輸入的模組清單會儲存在 ModuleIgnoreList 登錄專案中。
讀取事件檢視器中的進程結束報告
當受監視的進程以無訊息方式結束時,監視器會在事件檢視器中建立專案。 若要開啟事件檢視器,請輸入 command eventvwr.msc。 流覽至 [Windows 記錄 > 應用程式]。 尋找具有進程結束監視器 來源 的記錄專案。