共用方式為


範例 15:使用物件參考追蹤

物件參考追蹤是 Windows 功能,會在參考或取值物件時記錄循序堆疊追蹤。 其設計目的是偵測物件處理中可能導致損毀或記憶體流失的錯誤。 其中有些錯誤很難偵測,因為它們不一致地出現。 如需詳細資訊,請參閱 物件參考追蹤

您可以使用 [ 全域旗標 ] 對話方塊或在命令提示字元中設定物件參考追蹤。 下列範例會使用命令提示字元。 如需使用 [全域旗標 ] 對話方塊來設定物件參考追蹤的詳細資訊,請參閱 設定物件參考追蹤

您可以使用 Gflags 來啟用、停用及設定物件參考追蹤。 程序如下所示:

  • 使用 Gflags 在登錄中啟用物件參考追蹤 ,或作為執行時間) 設定 (核心旗標。 如果您將設定新增至登錄,您必須重新開機電腦,才能開始追蹤。 如果您啟用設定的執行時間版本,追蹤會立即啟動,但追蹤設定會在您關閉或重新開機電腦時還原為登錄機碼中的設定。

  • 啟動建立可疑物件的程式。 追蹤只包含追蹤開始之後啟動的進程所建立的物件。 如果進程在重新開機期間或不久之後啟動,請將追蹤設定新增至登錄,然後重新開機系統。

  • 使用!obtrace偵錯工具延伸模組 來檢視追蹤。 根據預設,追蹤會維護直到物件終結為止,但您可以使用 /p 參數來維護追蹤,直到追蹤停用為止。

  • 使用 Gflags 停用登錄中的物件參考追蹤。或作為執行時間) 設定的核心旗 (標。 如果您從登錄中刪除設定,則必須重新開機電腦以結束追蹤。 如果您停用設定的執行時間版本,追蹤會立即結束,但當您關閉或重新開機電腦時,追蹤設定會還原為登錄中的設定。

這些範例示範如何使用 Gflags 來啟用和停用物件參考追蹤。 \

啟用執行時間追蹤

下列命令會在命令提示字元中啟用物件參考追蹤。 此命令會使用 /ko 參數來啟用物件參考追蹤作為核心旗標, (執行時間) 設定。 此命令會使用 /t 參數來指定集區標籤 Tag1Fred。 因此,會追蹤使用 Tag1Fred 建立的所有物件。

gflags /ko /t Tag1;Fred

因為命令會變更核心旗標 (執行時間) 設定,所以物件參考追蹤會立即啟動。 追蹤將包含集區標籤 Tag1Fred 的所有物件,這些物件是由提交命令之後啟動的進程所建立。

Gflags 會透過列印下列訊息來回應:

Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

此訊息表示已啟用物件參考追蹤。 「暫存追蹤」表示當物件終結時,會刪除追蹤的所有記錄。 若要讓追蹤「永久」,請使用 /p 參數,指示 Windows 保留追蹤資料,直到物件參考追蹤停用,或電腦關閉或重新開機為止。

在登錄中啟用追蹤

下列命令會將物件參考追蹤組態新增至登錄。 您設定的追蹤會在您重新開機電腦時開始。

此命令會使用 /ro 參數來啟用物件參考追蹤作為登錄設定。 此命令會使用 /i 來指定 notepad.exe 的程式,以及 /t 參數來指定集區標記 Tag1Fred。 因此,使用 Tag1Fred 集區標籤的記事本程式所建立的所有物件都會追蹤。 此命令也會使用 /p 參數,它會保留追蹤資料,直到追蹤停用為止。

gflags /ro /t Tag1;Fred /i Notepad.exe /p

當您提交命令時,Gflags 會將資訊儲存在登錄中。 不過,由於在您重新開機電腦之前,登錄設定無效,因此已設定此物件參考追蹤,但尚未啟動。

Gflags 會透過列印下列訊息來回應:

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

訊息指出已在登錄中啟用物件參考追蹤。 「永久追蹤」表示追蹤資料會保留,直到您關閉或重新開機電腦為止。 此訊息也會列出將追蹤的集區標籤和映射檔案名。

顯示物件參考追蹤組態

您可以顯示目前有效或儲存在登錄中的物件參考追蹤組態,以在重新開機電腦時使用。

在此範例中,有一個物件參考追蹤組態儲存在登錄中,另一個設定用於執行時間的物件參考追蹤組態。 執行時間追蹤會立即開始 (,並覆寫任何登錄設定) 。 不過,如果您重新開機系統,執行時間設定會遺失,而且物件參考追蹤會話登錄設定會生效。

下列命令會顯示執行時間物件參考追蹤組態。 它會使用 /ko 參數,而沒有其他參數。

gflags /ko
Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

如果已啟用物件參考追蹤,如此範例所示,顯示的設定會描述進行中的追蹤。

下列命令會顯示儲存在登錄中的物件參考追蹤組態資料。 它會使用 /ro 參數,而沒有其他參數。

gflags /ro

回應中,Gflags 會顯示儲存在登錄中的資料:

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

如果您自將物件參考追蹤組態新增至登錄後重新開機電腦,則會回應 gflags /ro 命令所顯示的設定描述進行中的追蹤。 不過,如果您尚未重新開機,或已重新開機,但接著啟動執行時間物件參考追蹤 (/ko) ,則儲存在登錄中的設定目前無效,但在重新開機系統時會再次生效。

停用物件參考追蹤

當您停用執行時間 (核心旗標) 物件參考追蹤設定時,追蹤會立即停止。 當您在登錄中停用物件參考追蹤設定時,追蹤會在您重新開機電腦時停止。

下列命令會停用執行時間物件參考追蹤。 它會使用 /d 參數來停用所有設定。 您無法選擇性地停用設定。

gflags /ko -d

當命令成功時,Gflags 會回應下列訊息:

Running Kernel Settings :
Object Ref Tracing Disabled

下列命令會停用執行時間物件參考追蹤。

下列命令會停用登錄中的物件參考追蹤設定。 它會使用 /d 參數來停用所有設定。 您無法選擇性地停用設定。 當您重新開機電腦時,此命令會有效。

gflags /ro -d

當命令成功時,Gflags 會回應下列訊息:

Boot Registry Settings :
Object Ref Tracing Disabled