「廣域記錄器」追蹤工作階段會記錄在系統完全運作之前開機程序期間發生的事件,例如裝置驅動程式所產生的事件。 這是內建於 Windows 中的保留追蹤會話。
廣域日誌程式追蹤階段作業一律會將訊息寫入追蹤日誌。 全域記錄器不支援即時追蹤會話或緩衝追蹤會話。
因為全域記錄器必須在作業系統啟動過程的早期可用,所以它是透過登錄項 (在 HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger 子機碼) 來啟動和設定,而不是透過函式呼叫。 啟動之後,「全域記錄器」的行為就像一般事件追蹤會話一樣。
全域記錄器追蹤會話會使用保留的工作階段名稱「GlobalLogger」。 控制項 GUID 是由常數 GlobalLoggerGuid 表示。 您可以建立全域記錄器追蹤會話,然後重新啟動電腦以啟動追蹤會話。 一次只能在電腦上執行一個全域記錄器追蹤會話。
若要建立 Global Logger 追蹤工作階段,請使用 Tracelog。 它會自動建立登錄子機碼並包含追蹤會話選項的項目。 當您重新啟動電腦時,會啟動「全域記錄器」追蹤工作階段。 如需詳細資訊,請參閱 Tracelog 命令語法。
若要格式化全域記錄器追蹤會話的追蹤訊息,請搭配 system.tmf 使用 Tracefmt ,這是 WDK 中包含的 追蹤訊息格式檔案 。
因為全域記錄器會話是由登錄項目觸發,所以每次項目出現在登錄中時,它都會執行。 若要防止「廣域記錄器」階段作業在每次系統啟動時啟動,請將 「啟動」 項目的值設為 0 或刪除所有登錄項目。
您可以將全域記錄器追蹤會話轉換成 NT 核心記錄器追蹤會話,從而在開機程序期間追蹤核心。 如需相關資訊,請參閱開機時全域記錄器會話
追蹤提供者,例如核心模式驅動程式和使用者模式應用程式,可以記錄至全域記錄器追蹤會話。 這可讓您在系統開機期間追蹤驅動程式或其他追蹤提供者。 如需相關資訊,請參閱日誌記錄至全域記錄器會話
全球記錄器追蹤會話的限制
全域記錄器追蹤會話非常有用,但請務必瞭解其限制:
您一次只能執行一個 Global Logger 會話。
「Global Logger」階段作業不會將啟用通知發送給提供者。
廣域日誌登錄項目會保留在登錄中,且在您手動重設或刪除它們,或使用 tracelog -remove 指令之前,才有效。 在您重設它們之前,每次啟動系統時,「全域記錄器」會啟動工作階段。
Windows ACPI 記錄器會在全域記錄器追蹤會話中被永久啟用。 來自此日誌程式的追蹤訊息會出現在追蹤日誌中。
如果標準追蹤會話在驅動程式記錄至全域記錄器會話時啟動,驅動程式會切換並開始記錄至標準追蹤會話。
全域記錄器登錄項目
下表顯示設定全域記錄器會話的登錄項目。 這些項目位於 HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger 子機碼中。 只需要 「開始」 項目。
除了此表中的登錄項目外,您還可以在 GlobalLogger 子鍵下新增一個 ControlGUID 子鍵,以表示記錄至全域記錄器追蹤會話的追蹤提供者,例如驅動程式。 如需相關資訊,請參閱 記錄至全域記錄器工作階段。
| 入口 | 數據類型 | 說明 |
|---|---|---|
開始 |
REG_DWORD |
當設為 1 (開啟) 時,「全域記錄器」階段會在下次系統啟動時開始。 0 = 關閉, 1 = 開啟 |
BufferSize |
REG_DWORD |
指定每個緩衝區的大小 (以 KB 為單位)。 預設值為 0x40 (64 KB)。 |
時鐘類型 |
REG_DWORD |
指定用於追蹤訊息時間戳記的計時器。 從 Windows Vista 開始,預設值為 1。 在 Windows Vista 之前的作業系統上,預設值為 2。 1 = 效能計數器值 (高解析度) 2 = 系統計時器 3 = CPU 週期時鐘 |
EnableKernelFlags |
REG_BINARY(二進位制) |
將全域記錄器會話轉換成 NT 核心記錄器追蹤會話,並指定核心追蹤中包含的事件。 如需相關資訊,請參閱 開機時間全域記錄器工作階段。 |
檔案計數器 |
REG_DWORD |
儲存廣域日誌程式階段作業所產生的事件追蹤日誌檔數目。 系統會遞增此值,直到達到 FileMax的值為止。 然後,它會將值重設為 0。 此計數器可防止系統覆寫全域記錄器追蹤記錄檔。 |
FileMax |
REG_DWORD |
指定系統上容許的事件追蹤日誌檔數目上限。 當追蹤記錄數目達到指定的最大值時,系統會開始覆寫記錄,開頭為最舊。 預設值為 0,表示沒有最大值。 |
檔案名稱 |
REG_SZ |
事件追蹤記錄檔的路徑 (選擇性) 和檔名。 預設值為 %SystemRoot%\System32\LogFiles\WMI\trace.log。 |
FlushTimer |
REG_DWORD |
指定強制排清追蹤緩衝區的頻率 (以秒為單位)。 此強制排清是針對緩衝區已滿時和追蹤會話停止時進行的自動排清的額外動作。 預設值為 0。 根據預設,只有在緩衝區已滿時,才會排清緩衝區。 排清時間下限為1秒。 |
LogFileMode |
REG_DWORD |
指定記錄工作階段選項。 僅在 Windows Vista 和更新版本的 Windows 中受支持。 |
最大緩衝區數量 |
REG_DWORD |
指定可配置給工作階段的緩衝區數目上限。 預設值為 0x19 (25)。 |
MaximumFileSize |
REG_DWORD |
指定事件追蹤日誌檔的大小上限。 根據預設,沒有檔案大小上限。 |
最小緩衝區 |
REG_DWORD |
指定工作階段啟動時配置的緩衝區數目。 預設值為 0x3。 |
狀態 |
REG_DWORD |
儲存嘗試啟動 Global Logger 追蹤會話的返回代碼。 如果會話無法啟動,則此項目的值是 Win32 錯誤碼。 如果工作階段已啟動,則此項目的值為ERROR_SUCCESS。 |
您建立的這些登錄項目會保留在登錄中,並且在您刪除它們或變更其值之前一直有效。 因此,在執行 Global Logger 階段作業之後,請使用 tracelog -remove GlobalLogger 指令,將 Start 項目的值設為 0,並刪除其他 Global Logger 登錄項目。 否則,每次重新啟動電腦時,系統都會執行「全域記錄器工作階段」,而產生的日誌檔可能會變得非常大。
記錄模式常數
下表顯示 HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger 子機碼中 LogFileMode 登錄項的有效值。 此項目用來設定廣域記錄器追蹤階段作業的選項,包括即時追蹤階段作業、專用追蹤階段作業、循環記載及緩衝 (無記錄) 的選項。 只有 Windows Vista 和更新版本的 Windows 才支援此登錄專案。
此登錄項目對應至 EVENT_TRACE_PROPERTIES 結構的 LogFileMode 成員。 其值對應至記錄模式常數。 EVENT_TRACE_PROPERTIES結構和記錄模式常數會在 Microsoft Windows SDK 檔中說明。
此處顯示此表格,以顯示常數的十六進位值。 使用這些值或這些值的總和來代表 LogFileMode 登錄專案中的常數。
| 價值觀 | 常數 | 說明 |
|---|---|---|
0x0 |
EVENT_TRACE_FILE_MODE_NONE |
不會建立任何事件追蹤日誌檔。 |
0x1 |
(EVENT_TRACE_FILE_MODE_SEQUENTIAL) |
事件追蹤日誌檔是循序的。 |
0x2 |
循環文件模式 |
事件追蹤記錄檔是循環的。 |
0x4 |
事件追踪檔案附加模式 |
將追蹤訊息附加至現有的日誌檔。 此模式僅對循序檔案有效。 |
0x8 |
EVENT_TRACE_FILE_MODE_NEWFILE |
每當現有檔案達到 MaximumFileSize 專案的值時,請建立新的事件追蹤記錄檔 (請參閱上表) 。 |
0x20 |
EVENT_TRACE_FILE_MODE_PREALLOCATE |
保留事件追蹤日誌檔案的空間。 僅適用於EVENT_TRACE_FILE_MODE_SEQUENTIAL或EVENT_TRACE_FILE_MODE_CIRCULAR,不適用於EVENT_TRACE_FILE_MODE_NEWFILE。 |
0x40 |
EVENT_TRACE_NONSTOPPABLE_MODE |
呼叫 StopTrace 不會停止追蹤會話。 此功能可防止使用者停止系統診斷及調整所需的追蹤工作階段。 |
0x100 |
EVENT_TRACE_REAL_TIME_MODE |
指定即時追蹤工作階段。 |
0x200 |
事件追蹤延遲開啟檔案模式 |
僅限內部使用。 |
0x400 |
EVENT_TRACE_BUFFERING_MODE |
事件會保留在緩衝區中。 它們永遠不會寫入日誌檔或傳遞給追蹤消費者。 |
0x800 |
EVENT_TRACE_PRIVATE_LOGGER_MODE模式 |
指定私人追蹤記錄工作階段。 此旗標對全局日誌記錄器追蹤階段作業無效。 |
0x1000 |
EVENT_TRACE_ADD_HEADER_MODE |
僅限內部使用。 |
0x2000 |
EVENT_TRACE_USE_KBYTES_FOR_SIZE |
解譯 MaximumFileSize 的值 (以 KB 為單位),而不是 MB。 |
0x4000 |
EVENT_TRACE_USE_GLOBAL_SEQUENCE |
產生追蹤訊息的廣域序號。 這些數字對於電腦上的所有追蹤會話都是唯一的。 依預設,追蹤訊息沒有任何序號。 |
0x8000 |
EVENT_TRACE_USE_LOCAL_SEQUENCE |
產生追蹤訊息的本地序號。 這些數字在追蹤會話中是唯一的。 依預設,追蹤訊息沒有任何序號。 |
0x10000 |
EVENT_TRACE_RELOG_MODE |
僅限內部使用。 |
0x80000 |
EVENT_TRACE_KD_FILTER_MODE |
將追蹤訊息重新導向至核心偵錯工具,並將追蹤緩衝區大小設定為 3 KB,這是偵錯工具的緩衝區大小上限。 |
0x1000000 |
EVENT_TRACE_MODE_RESERVED |
對於 Global Logger 追蹤會話無效。 |
0x01000000 |
EVENT_TRACE_USE_PAGED_MEMORY |
從可分頁記憶體配置追蹤會話緩衝區。 根據預設,緩衝區會配置於不可分頁的記憶體。 |