全域記錄器追蹤會話
全域記錄器追蹤會話會記錄在系統完全運作之前在開機程式期間發生的事件,例如設備磁碟機所產生的事件。 它是 Windows 內建的保留追蹤會話。
全域記錄器追蹤會話一律會將訊息寫入追蹤記錄檔。 全域記錄器不支援即時追蹤會話或緩衝追蹤會話。
由於全域記錄器必須在作業系統開機程式初期使用,因此會使用 HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger 子機碼 () 中的登錄專案來啟動和設定,而不是函式呼叫。 啟動之後,全域記錄器的行為就像一般事件追蹤會話。
全域記錄器追蹤會話會使用保留的會話名稱 「GlobalLogger」。 控制項 GUID 是由常數 GlobalLoggerGuid來表示。 您可以建立全域記錄器追蹤會話,然後重新開機電腦以啟動追蹤會話。 一次只能在電腦上執行一個全域記錄器追蹤會話。
若要建立全域記錄器追蹤會話,請使用 Tracelog。 它會自動建立儲存追蹤會話選項的登錄子機碼和專案。 當您重新開機電腦時,就會啟動全域記錄器追蹤會話。 如需詳細資訊,請參閱 Tracelog 命令語法。
若要格式化來自全域記錄器追蹤會話的追蹤訊息,請使用 Tracefmt 搭配 system.tmf,這是 WDK 中包含的 追蹤訊息格式檔案 。
因為全域記錄器會話是由登錄專案觸發,所以每次專案出現在登錄中時都會執行。 若要防止全域記錄器會話在每次系統啟動時啟動,請將 Start 專案的值設定為 0 或刪除所有登錄專案。
您可以將全域記錄器追蹤會話轉換為 NT 核心記錄器追蹤會話,藉此在開機程式期間追蹤核心。 如需詳細資訊,請參閱 開機時間全域記錄器會話
追蹤提供者,例如核心模式驅動程式和使用者模式應用程式,可以登入全域記錄器追蹤會話。 這可讓您在系統開機期間追蹤驅動程式或其他追蹤提供者。 如需詳細資訊,請參閱 記錄至全域記錄器會話
全域記錄器追蹤會話的限制
全域記錄器追蹤會話非常有用,但請務必注意其限制:
您一次只能執行一個全域記錄器會話。
全域記錄器會話不會傳送啟用通知給提供者。
全域記錄器登錄專案會保留在登錄中,而且在您手動重設或刪除它們之前有效,或使用 tracelog -remove 命令。 在您重設它們之前,每次啟動系統時都會啟動全域記錄器會話。
全域記錄器追蹤會話會永久啟用 Windows ACPI 記錄器。 來自此記錄器的追蹤訊息會出現在追蹤記錄檔中。
如果標準追蹤會話在驅動程式記錄到全域記錄器會話時啟動,驅動程式會切換並開始記錄至標準追蹤會話。
全域記錄器登錄專案
下表顯示設定全域記錄器會話的登錄專案。 這些專案位於 HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger 子機碼中。 只需要 [開始] 專案。
除了此資料表中的登錄專案之外,您也可以在GlobalLogger子機碼下加入ControlGUID子機碼,以代表追蹤提供者,例如驅動程式,該驅動程式會記錄到全域記錄器追蹤會話。 如需詳細資訊,請參閱 記錄至全域記錄器會話。
進入 | 資料類型 | 描述 |
---|---|---|
開始 |
REG_DWORD |
當設定為) 上的 1 (時,全域記錄器會話會在下次系統啟動時啟動。 0 = off, 1=on |
BufferSize |
REG_DWORD |
指定 KB) 中每個緩衝區 (的大小。 預設值為 0x40 (64 KB) 。 |
ClockType |
REG_DWORD |
指定用於追蹤訊息時間戳記的計時器。 從 Windows Vista 開始,預設值為 1。 在 Windows Vista 之前的作業系統上,預設值為 2。 1 = 效能計數器值 (高解析度) 2 = 系統計時器 3 = CPU 週期時鐘 |
EnableKernelFlags |
REG_BINARY |
將全域記錄器會話轉換為 NT 核心記錄器追蹤會話,並指定核心追蹤中包含的事件。 如需詳細資訊,請參閱 開機時間全域記錄器會話。 |
FileCounter |
REG_DWORD |
儲存全域記錄器會話所產生的事件追蹤記錄檔數目。 系統會遞增此值,直到達到 FileMax的值為止。 然後,它會將值重設為 0。 此計數器可防止系統覆寫全域記錄器追蹤記錄檔。 |
FileMax |
REG_DWORD |
指定系統上允許的事件追蹤記錄檔數目上限。 當追蹤記錄數目達到指定的最大值時,系統會開始覆寫記錄,從最舊開始。 預設值為 0,表示沒有最大值。 |
FileName |
REG_SZ |
路徑 (事件追蹤記錄檔的選擇性) 和檔案名。 預設值為 %SystemRoot%\System32\LogFiles\WMI\trace.log。 |
FlushTimer |
REG_DWORD |
指定在追蹤緩衝區強制排清) ,以秒為單位 (的頻率。 這個強制排清除了當緩衝區已滿時以及追蹤會話停止時所發生的自動排清。 預設值為 0。 根據預設,只有在緩衝區已滿時才會排清。 排清時間下限為 1 秒。 |
LogFileMode |
REG_DWORD |
指定記錄會話選項。 僅支援 Windows Vista 和更新版本的 Windows。 |
MaximumBuffers |
REG_DWORD |
指定可配置給會話的緩衝區數目上限。 預設值為 0x19 (25) 。 |
MaximumFileSize |
REG_DWORD |
指定事件追蹤記錄檔的大小上限。 根據預設值,沒有檔案大小限制。 |
MinimumBuffers |
REG_DWORD |
指定會話啟動時所配置的緩衝區數目。 預設值為 0x3。 |
狀態 |
REG_DWORD |
儲存嘗試啟動全域記錄器追蹤會話的傳回碼。 如果會話無法啟動,則這個專案的值是 Win32 錯誤碼。 如果會話已啟動,則這個專案的值會ERROR_SUCCESS。 |
您建立的這些登錄專案會保留在登錄中,而且在您刪除或變更其值之前有效。 因此,在執行全域記錄器會話之後,請使用 tracelog -remove GlobalLogger 命令將 Start 專案的值設定為 0,並刪除其他全域記錄器登錄專案。 否則,每次重新開機電腦時,就會執行全域記錄器會話,而產生的記錄檔可能會成長非常大。
記錄模式常數
下表顯示HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger子機碼中LogFileMode登錄專案的有效值。 這個專案是用來設定全域記錄器追蹤會話的選項,包括即時追蹤會話、私用追蹤會話、迴圈記錄和緩衝 (沒有記錄) 的選項。 只有 Windows Vista 和更新版本的 Windows 才支援此登錄專案。
此登錄專案會對應至 EVENT_TRACE_PROPERTIES 結構的 LogFileMode 成員。 其值會對應至記錄模式常數。 Microsoft Windows SDK檔中會說明EVENT_TRACE_PROPERTIES結構和記錄模式常數。
此資料表會顯示在這裡,以顯示常數的十六進位值。 使用這些值或這些值的總和來表示 LogFileMode 登錄專案中的常數。
值 | 常數 | 描述 |
---|---|---|
0x0 |
EVENT_TRACE_FILE_MODE_NONE |
不會建立任何事件追蹤記錄檔。 |
0x1 |
EVENT_TRACE_FILE_MODE_SEQUENTIAL |
事件追蹤記錄檔是循序的。 |
0x2 |
EVENT_TRACE_FILE_MODE_CIRCULAR |
事件追蹤記錄檔是迴圈的。 |
0x4 |
EVENT_TRACE_FILE_MODE_APPEND |
將追蹤訊息附加至現有的記錄檔。 此模式只適用于循序檔案。 |
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 |
EVENT_TRACE_DELAY_OPEN_FILE_MODE |
僅供內部使用。 |
0x400 |
EVENT_TRACE_BUFFERING_MODE |
事件會保留在緩衝區中。 它們永遠不會寫入記錄檔或傳遞至追蹤取用者。 |
0x800 |
EVENT_TRACE_PRI加值稅E_LOGGER_MODE |
指定私人追蹤會話。 此旗標對全域記錄器追蹤會話無效。 |
0x1000 |
EVENT_TRACE_ADD_HEADER_MODE |
僅供內部使用。 |
0x2000 |
EVENT_TRACE_USE_KBYTES_FOR_SIZE |
以 KB 解譯 MaximumFileSize 的值,而不是 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 |
對全域記錄器追蹤會話無效。 |
0x01000000 |
EVENT_TRACE_USE_PAGED_MEMORY |
從可分頁記憶體配置追蹤會話緩衝區。 根據預設,緩衝區會從不可分頁的記憶體配置。 |