Share via


GFlags 命令概觀

如需如何安裝和尋找gflags.exe的一般資訊,請參閱 GFlags

您可以交替使用 GFlags 命令和 全域旗標對話方塊

GFlags 命令使用方式

若要使用 GFlags,請在命令列中輸入下列命令。

若要開啟 GFlags 對話方塊:

gflags

若要在登錄中設定或清除全域旗標:

gflags /r [{+ | -}Flag [{+ | -}Flag...]]

若要設定或清除目前會話的全域旗標:

gflags /k [{+ | -}Flag [{+ | -}Flag...]]

若要設定或清除影像檔案的全域旗標:

gflags /i ImageFile [{+ | -}Flag [{+ | -}Flag...]]
gflags /i ImageFile /tracedb SizeInMB

若要設定或清除 Windows Vista 和更新版本 (特殊集區功能)

gflags {/r | /k} {+ | -}spp {PoolTag | 0xSize}

若要啟用或停用 Windows Vista 和更新版本 (物件參考追蹤功能)

gflags {/ro | /ko} [/p] [/i ImageFile | /t PoolTag;[PoolTag...]]
gflags {/ro | /ko} /d

若要啟用和設定頁面堆積驗證:

gflags /p /enable ImageFile  [ /full [/backwards] | /random Probability | /size SizeStart SizeEnd | /address AddressStart AddressEnd | /dlls DLL [DLL...] ] 
[/debug ["DebuggerCommand"] | /kdebug] [/unaligned] [/notraces] [/fault Rate [TimeOut]] [/leaks] [/protect] [/no_sync] [/no_lock_checks] 

若要停用頁面堆積驗證:

gflags /p [/disable ImageFile] [/?]

若要顯示說明:

gflags /?

參數

國旗
指定 FlagAbbr) 或十六進位值的三個字母 (縮寫, (FlagHex) 代表偵錯功能。 縮寫和十六進位值會列在 GFlags 旗標資料表中。

使用下列其中一種旗標格式:

格式 描述

{ + | - }FlagAbbr

設定 (+) 或清除旗標縮寫所代表的旗標 () 。 如果沒有加號 (+) 或減去 () 符號,命令就不會有任何作用。

[ + | - ]FlagHex

加入 (+) 或減去 () 旗標的十六進位值。 當其值包含在總和中時,就會設定旗標。 新增 (+) 是預設值。 輸入十六進位值 (不含 0x) 代表單一旗標,或輸入多個旗標的十六進位值總和。

ImageFile
指定可執行檔的名稱,包括副檔名 (,例如notepad.exe或mydll.dll) 。

/R
登錄。 顯示或變更儲存在登錄中的全系統偵錯旗標。 當您重新開機 Windows 時,這些設定會生效,直到您變更這些設定為止。

沒有其他參數, gflags /r 會顯示登錄中設定的系統範圍旗標。

/K
核心旗標設定。 顯示或變更此會話的系統範圍偵錯旗標。 這些設定會立即生效,但會在 Windows 關機時遺失。 這些設定會影響此命令完成後啟動的進程。

沒有額外的參數, gflags /k 會顯示針對目前會話設定的系統範圍旗標。

/我
影像檔案設定。 顯示或變更特定進程的偵錯旗標。 這些設定會儲存在登錄中。 這些實例對於此程式的所有新實例都有效,而且在您變更這些實例之前仍有效。

沒有其他參數, gflags /iImageFile 會顯示為指定進程設定的旗標。

/tracedbSizeInMB
設定進程之使用者模式堆疊追蹤資料庫的大小上限。 若要使用此參數,必須針對進程設定 [ 建立使用者模式堆疊追蹤資料庫 (ust) 旗標]。

SizeInMB 是整數,代表小數單位的 MB 數。 預設值為最小大小,8 MB;沒有大小上限。 若要還原為預設大小,請將 SizeInMB 設定為 0。

spp
(Windows Vista 和更新版本。) 設定或清除 特殊集 區功能。 如需範例,請參閱 範例 14:設定特殊集區

PoolTag
(Windows Vista 和更新版本。) 指定 特殊集 區功能的集區標籤。 只搭配 spp 旗標使用。

輸入 PoolTag的四個字元模式,例如 Tag1。 它可以包含 (取代任何單一字元) , (* 取代多個字元) 萬用字元。 例如,Fat* 或 Av?4。 集區標籤一律會區分大小寫。

0x大小
(Windows Vista 和更新版本。) 指定特殊集區功能的大小範圍。 只搭配 spp 旗標使用。 如需選取大小值的指引,請參閱 特殊集區中的。

/Ro
啟用、停用及顯示登錄中的 物件參考追蹤 設定。 若要變更此設定有效,您必須重新開機 Windows。

如果沒有其他參數, /ro 會在登錄中顯示 [物件參考追蹤] 設定。

若要啟用物件參考追蹤,您必須在命令中包含至少一個集區標籤 (/tPoolTag) 或一個影像檔 (/i ImageFile) 。 如需詳細資訊,請參閱 範例 15:使用物件參考追蹤

下表列出與 /ro一起有效的子參數。

/tPoolTags

將追蹤限制為具有指定集區標籤的物件。 使用分號 (;) 來分隔標籤名稱。 輸入最多 16 個集區標籤。

輸入 PoolTags的四個字元模式,例如 Tag1。

如果您指定多個集區標籤,Windows 會追蹤具有任何指定集區標籤 的物件。

如果您未指定任何集區標籤,Windows 會追蹤映射所建立的所有物件。

/iImageFile

將追蹤限制為使用指定影像檔的進程所建立的物件。 您只能使用 /i 參數指定一個影像檔。

輸入影像檔案名稱,例如notepad.exe,最多 64 個字元。 「System」 和 「Idle」 不是有效的映射名稱。

如果您未指定影像檔案,Windows 會追蹤具有指定集區標籤的所有物件。 如果您同時指定影像檔 (/i) 和一或多個集區標籤 (/t) ,Windows 會追蹤具有指定映射所建立之任何指定集區標籤的物件。

/d

清除物件參考追蹤功能設定。 搭配 /ro使用時,它會清除登錄中的設定。

/p

永久。 追蹤資料會保留,直到停用物件參考追蹤,或電腦關閉或重新開機為止。 根據預設,當物件終結時,會捨棄物件的追蹤資料。

/ko
啟用、停用及顯示 (執行時間的核心旗標,) 物件參考追蹤 設定。 此設定的變更會立即生效,但會在系統關閉或重新開機時遺失。 如需詳細資訊,請參閱 範例 15:使用物件參考追蹤

如果沒有其他參數, /ko 會顯示 (執行時間的核心旗標,) 物件參考追蹤設定。

若要啟用物件參考追蹤,您必須在 命令中包含至少一個集區標籤 (/tPoolTag) 或一個影像檔 (/iImageFile) 。

下表列出與 /ko一起有效的子參數。

/tPoolTags

將追蹤限制為具有指定集區標籤的物件。 使用分號 (;) 分隔標籤名稱。 輸入最多 16 個集區標籤。

輸入 PoolTags的四個字元模式,例如 Tag1。

如果您指定多個集區標籤,Windows 會追蹤具有任何指定集區標籤的物件。

如果您未指定任何集區標籤,Windows 會追蹤映射所建立的所有物件。

/iImageFile

將追蹤限制為使用指定之影像檔案的進程所建立的物件。 您只能使用 /i 參數指定一個影像檔。

如果您未指定影像檔案,Windows 會追蹤具有指定集區標籤的所有物件。

如果您同時指定映射檔 (/i) 和一或多個集區標籤, (/t) ,Windows 會追蹤具有指定映射所建立之任何指定集區標記的物件。

/d

清除物件參考追蹤功能設定。 搭配 /ro使用時,它會清除登錄中的設定。

/p

永久。 追蹤資料會保留到物件參考追蹤停用,或電腦關閉或重新開機為止。 根據預設,當物件終結時,會捨棄物件的追蹤資料。

/P
設定進程的頁面堆積驗證選項。

沒有其他參數, gflags /p 會顯示啟用頁面堆積驗證的影像檔清單。

頁面堆積驗證會監視動態堆積記憶體作業,包括配置作業和可用作業,並在偵測到堆積錯誤時造成偵錯工具中斷。

/disableImageFile
關閉指定影像檔 (標準或完整) 的頁面堆積驗證。

此命令相當於關閉進程 (gflags /iImageFile-hpa) 的啟用頁面堆積 (hpa) 旗標。 您可以交換使用命令。

/enableImageFile
開啟指定之影像檔的頁面堆積驗證。

根據預設, /enable 參數會開啟影像檔 的標準 頁面堆積驗證。 若要啟用影像檔 的完整 頁面堆積驗證,請將 /full 參數新增至 命令,或使用 /i 參數搭配 +hpa 旗標。

/全
開啟程式的完整頁面堆積驗證。 完整頁面堆積驗證會在每個配置結束時放置保留虛擬記憶體的區域。

使用此參數相當於開啟進程 (gflags /iImageFile+hpa) 的[啟用] 頁面堆積 (hpa) 旗標。 您可以交換使用命令。

/向後
將保留的虛擬記憶體區域放在配置開頭,而不是放在結尾。 如此一來,偵錯工具會在緩衝區的開頭攔截溢出,而不是緩衝區結尾的溢出。 僅適用于 /full 參數。

/randomProbability
根據指定的機率,為每個配置選擇完整或標準頁面堆積驗證。

Probability 是從 0 到 100 的十進位整數,代表完整頁面堆積驗證的機率。 100 的機率與使用 /full 參數相同。 0 的機率與使用標準頁面堆積驗證相同。

/sizeSizeStart SizeEnd
啟用指定大小範圍內配置的完整頁面堆積驗證,並啟用程式所有其他配置的標準頁面堆積驗證。

SizeStartSizeEnd 是十進位整數。 預設為所有配置的標準頁面堆積驗證。

/addressAddressStart AddressEnd
針對在指定位址範圍中的傳回位址位於執行時間呼叫堆疊上時所配置的記憶體啟用完整頁面堆積驗證。 它可讓程式針對所有其他配置啟用標準頁面堆積驗證。

若要使用這項功能,請指定範圍,其中包含使用可疑配置呼叫函式的所有函式位址。 發生可疑配置時,呼叫函式的位址將會位於呼叫堆疊上。

AddressStartAddressEnd 指定配置堆疊追蹤中搜尋的位址範圍。 位址是以十六進位格式指定,例如,0xAABBCCDD。

在 Windows Server 2003 和舊版系統上, /address 參數只在 x86 型電腦上有效。 在 Windows Vista 上:在所有支援的架構上都是有效的。

/dllsDLL[DLL...]
針對程式所有其他配置所要求的配置,啟用完整頁面堆積驗證。指定的 DLL 和標準頁面堆積驗證。

DLL 是二進位檔案的名稱,包括副檔名。 指定的檔案必須是進程在執行期間載入的函式程式庫。

/調試
在偵錯工具下自動啟動 /enable 參數指定的進程。

根據預設,此參數會使用 NTSD 偵錯工具搭配命令列 ntsd -g -G -x ,並啟用頁面堆積,但您可以使用 DebuggerCommand 變數來指定不同的偵錯工具和命令列。

如需 NTSD 的相關資訊,請參閱 使用 CDB 和 NTSD 進行偵錯

此選項適用于難以從命令提示字元啟動的程式,以及由其他進程啟動的程式。

DebuggerCommand
指定偵錯工具和傳送至偵錯工具的命令。 這個引號字串可以包含偵錯工具的完整路徑、偵錯工具名稱和偵錯工具解譯的命令參數。 需要引號。

如果命令包含偵錯工具的路徑,則路徑不能包含任何其他引號。 如果出現其他引號,命令殼層 (cmd.exe) 會錯誤解譯命令。

/kdebug
使用命令列ntsd -g -G -x自動啟動 NTSD 偵錯工具下/enable參數所指定的進程,並啟用頁面堆積,以及控制 NTSD 重新導向至核心偵錯工具。

如需 NTSD 的相關資訊,請參閱 使用 CDB 和 NTSD 進行偵錯

/unaligned
即使這樣做表示起始位址未對齊 8 位元組區塊,仍會在頁面結尾界限對齊每個配置結尾。 根據預設,堆積管理員保證配置起始位址會對齊 8 位元組區塊。

此選項可用來偵測一個位元組的錯誤。 當此參數與 /full 參數搭配使用時,保留的虛擬記憶體區域會在配置的最後一個位元組之後開始,而且當進程嘗試讀取或寫入配置以外的一個位元組時,就會立即發生錯誤。

/decommit
此選項不再有效。 已接受,但會忽略。

PageHeap 程式 (pageheap.exe) 包含在 Windows 2000 中實作完整頁面堆積驗證,方法是在配置之後放置無法存取的頁面。 在該工具中, /decommit 參數取代了無法存取頁面的保留虛擬記憶體區域。 在此版本的 GFlags 中,保留虛擬記憶體的區域一律用來實作完整頁面堆積驗證。

/notraces
指定不會儲存執行時間堆疊追蹤。

此選項會稍微改善效能,但會讓偵錯變得更困難。 此參數有效,但不建議使用。

/故障
強制程式的記憶體配置在指定的速率和指定的逾時之後失敗。

此參數會將堆積配置錯誤插入要測試的映射檔中, (稱為「錯誤插入」) ,讓某些記憶體配置失敗,如程式在低記憶體狀況中執行時可能發生的情況。 這項測試有助於偵測處理配置失敗的錯誤,例如無法釋放資源。

費率

指定從 1 (.01%) 到 10000 (100%) 的小數整數,代表配置將會失敗的機率。 預設值為 100 (1%) 。

TimeOut

決定程式開始與錯誤插入常式開始之間的時間間隔。

TimeOut 是以秒為單位來測量。 預設值為 5 (秒) 。

/洩漏
檢查進程結束時是否有堆積流失。

/leaks參數會停用完整頁面堆積。 使用/leaks時,會忽略修改/full參數的 /full參數和參數,例如/backwards,而 GFlags 會執行具有流失檢查的標準頁面堆積驗證。

/保護
保護堆積內部結構。 此測試可用來偵測隨機堆積損毀。 它可能會讓執行速度明顯變慢。

/no_sync
檢查未同步存取。 如果此參數偵測到以HEAP_NO_SERIALIZE旗標建立的堆積是由不同的執行緒存取,就會造成中斷。

請勿使用此旗標來偵錯包含自訂堆積管理員的程式。 同步處理堆積存取的函式會導致頁面堆積驗證程式回報不存在的同步處理錯誤。

/no_lock_checks
停用重要區段驗證程式。

/?
顯示 GFlags 的說明。 使用 /p時, /? 會顯示 GFlags 中頁面堆積驗證選項的說明。

評論

在沒有參數的情況下輸入 gflags 會開啟 [ 全域旗標] 對話方塊。

在沒有其他參數的情況下輸入 gflags /p 會顯示已啟用頁面堆積驗證的程式清單。

若要清除所有旗標,請將[旗標] 設定為-FFFFFFFF。 (將 旗標 設定為 0 會將零新增至目前的旗標值。它不會清除所有 flags.)

當您將影像檔 標設定為 FFFFFFFF 時,Windows 會清除所有旗標,並刪除映射檔登錄子機碼中的 GlobalFlag 專案。 子機碼會維持不變。

頁面堆積/enable作業的/full/random、/size/address/dlls參數會決定哪些配置受限於頁面堆積驗證和使用驗證方法。 每個命令中只能使用其中一個參數。 預設為程式所有配置的標準頁面堆積驗證。 其餘參數會設定頁面堆積驗證的選項。

GFlags 中的頁面堆積功能只會監視使用標準 Windows 堆積管理員函式的堆積記憶體配置, (HeapAllocGlobalAlloc、LocalAllocmallocnew、new、new[],或其對應的解除配置函式) ,或使用呼叫標準堆積管理員函式的自訂作業。

若要判斷程式是否已啟用完整或標準頁面堆積驗證,請在命令列輸入 gflags /p。 在產生的顯示中, 追蹤 表示程式已啟用標準頁面堆積驗證, 而完整追蹤 表示已針對程式啟用完整頁面堆積驗證。

/enable參數會設定登錄中映射檔的[啟用] 頁面堆積 (hpa) 旗標。 不過,/enable參數預設會開啟影像檔的標準堆積驗證,不同于具有+hpa旗標的/i參數,這會開啟映射檔的完整堆積驗證。

標準 頁面堆積驗證會在配置結束時放置隨機模式,並在釋放堆積區塊時檢查模式。 完整 頁面堆積驗證會在每個配置結束時放置保留虛擬記憶體的區域。

完整頁面堆積驗證可以快速取用系統記憶體。 若要啟用記憶體密集進程的完整頁面堆積驗證,請使用 /size/dlls 參數。

使用全域旗標進行偵錯之後,提交 gflags /p /disable 命令以關閉頁面堆積驗證並刪除相關聯的登錄專案。 否則,偵錯工具讀取的專案會保留在登錄中。 您無法針對這項工作使用 gflags /i hpa 命令,因為它會關閉頁面堆積驗證,但不會刪除登錄專案。

根據預設,在 Windows Vista 和更新版本的 Windows 上,程式特定設定 (映射檔旗標和頁面堆積驗證設定) 會儲存在目前的使用者帳戶中。

此版本的 GFlags 包含 -v 選項,可啟用針對 GFlags 開發的功能。 不過,這些功能尚未完成,因此不會記載。