次の方法で共有


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 /?

パラメーター

フラグ
デバッグ機能を表す 3 文字の省略形 (FlagAbbr) または 16 進値 (FlagHex) を指定します。 省略形と 16 進数の値は GFlags フラグ テーブル に一覧表示されます。

次のフラグ形式のいずれかを使用します。

書式 説明

{+ | -}FlagAbbr

フラグの省略形で表されるフラグを (+) またはクリア (-) します。 正符号 (+) 記号またはマイナス記号 (-) を指定しないと、コマンドは無効になります。

[+ | -]FlagHex

フラグの 16 進値を (+) または減算 (-) します。 フラグは、その値が合計に含まれるときに設定されます。 Add (+) が既定値です。 1 つのフラグを表す 16 進数の値 (0x なし) を入力するか、複数のフラグの 16 進値の合計を入力します。

ImageFile
ファイル名拡張子 (notepad.exeやmydll.dllなど) を含む実行可能ファイルの名前を指定します。

/r
レジストリ: レジストリに格納されているシステム全体のデバッグ フラグを表示または変更します。 これらの設定は、Windows を再起動しメイン変更するまで有効になります。

追加のパラメーターがない場合、 gflags /r はレジストリに設定されているシステム全体のフラグを表示します。

/k
カーネル フラグの設定。 このセッションのシステム全体のデバッグ フラグを表示または変更します。 これらの設定はすぐに有効ですが、Windows がシャットダウンすると失われます。 この設定は、このコマンドの完了後に開始されたプロセスに影響します。

追加のパラメーターがない場合、 gflags /k は現在のセッションに設定されているシステム全体のフラグを表示します。

/i
画像ファイルの設定。 特定のプロセスのデバッグ フラグを表示または変更します。 これらの設定はレジストリに格納されます。 これらは、このプロセスのすべての新しいインスタンスに対して有効でありメイン変更するまで有効です。

追加のパラメーターがない場合、 gflags /iImageFile には、指定されたプロセスに設定されたフラグが表示されます。

/tracedbSizeIn MB (メガバイト)
プロセスのユーザー モード スタック トレース データベースの最大サイズを設定します。 このパラメータを使用するには ユーザー モード スタック トレース データベースの作成 (ust) フラグをプロセスに設定する必要があります。

SizeIn MB (メガバイト) は、メガバイト数を 10 進数で表す整数です。 既定値は最小サイズの 8 MB (メガバイト)です。最大サイズはありません。 既定のサイズに戻すには SizeIn MB (メガバイト) を 0 に設定します。

spp
(Windows Vista 以降。) 特別プール 機能を設定またはクリアします。 例については 例 14: 特別なプールの構成 を参照してください。

PoolTag
(Windows Vista 以降)。 特別プール 機能のプール タグを指定します。 spp フラグでのみ使用します。

Tag1 などの PoolTag の 4 文字のパターンを入力します。 ? (任意の 1 文字の代替) および * (複数の文字の代替) ワイルドカード文字を含めることができます。 たとえば、Fat* や Av?4 などです。 プールのタグでは常に大文字と小文字が区別されます。

0xサイズ
(Windows Vista 以降。) 特殊プール機能のサイズ範囲を指定します。 spp フラグでのみ使用します。 サイズ値の選択に関するガイダンスについては 特殊プール の「割り当てサイズの選択」を参照してください。

/ro
レジストリ内の オブジェクト参照のトレース 設定を有効、無効、および表示します。 この設定の変更を有効にするには、Windowsを再起動する必要があります。

追加のパラメーターがない場合、 /ro はレジストリのオブジェクト参照トレース設定を表示します。

オブジェクト参照トレースを有効にするには、少なくとも 1 つのプール タグ (/tPoolTag) または 1 つのイメージ ファイル (/i ImageFile) をコマンドに含める必要があります。 詳細については、「 例 15: オブジェクト参照トレースの使用」を参照してください。

次の表に /ro で有効なサブパラメーターを示します。

/tPoolTags

指定したプール タグを持つオブジェクトにトレースを制限します。 タグ名を区切るには、セミコロン (;) を使用します。 最大 16 個のプール タグを入力します。

Tag1 などの PoolTags の 4 文字のパターンを入力します。

複数のプール タグを指定した場合、Windows は指定されたプール タグのいずれかを使用してオブジェクトをトレースします。

プール タグを指定しない場合、Windows はイメージによって作成されたすべてのオブジェクトをトレースします。

/iImageFile

指定したイメージ ファイルを使用してプロセスによって作成されるオブジェクトにトレースを制限します。 /i パラメーターを使用して指定できるイメージ ファイルは 1 つだけです。

notepad.exeなどのイメージ ファイル名を最大 64 文字で入力します。 "System" と "Idle" は有効なイメージ名ではありません。

イメージ ファイルを指定しない場合、Windows は指定されたプール タグを持つすべてのオブジェクトをトレースします。 イメージ ファイル (/i) と 1 つ以上のプール タグ (/t) の両方を指定した場合、Windows は、指定されたイメージによって作成されたプール タグのいずれかを持つオブジェクトをトレースします。

/d

オブジェクト参照トレース機能の設定をクリアします。 /ro と共に使用すると、レジストリの設定がクリアされます。

/p

永続。 トレース データは、オブジェクト参照トレースが無効であるか、コンピューターがシャットダウンまたは再起動されるまで保持されます。 既定では、オブジェクトのトレース データはカードオブジェクトが破棄されるときに破棄されます。

/ko
カーネル フラグ (実行時) オブジェクト参照トレース 設定を有効、無効、および表示します。 この設定の変更はすぐに有効になりますが、システムがシャットダウンまたは再起動されると失われます。 詳細については、「 例 15: オブジェクト参照トレースの使用」を参照してください。

追加のパラメーターがない場合、 /ko はカーネル フラグ (実行時) オブジェクト参照トレース設定を表示します。

オブジェクト参照トレースを有効にするには、少なくとも 1 つのプール タグ (/tPoolTag) または 1 つのイメージ ファイル (/iImageFile) をコマンドに含める必要があります。

次の表に /ko で有効なサブパラメーターを示します。

/tPoolTags

指定したプール タグを持つオブジェクトにトレースを制限します。 タグ名を区切るには、セミコロン (;) を使用します。 最大 16 個のプール タグを入力します。

Tag1 などの PoolTags の 4 文字のパターンを入力します。

複数のプール タグを指定した場合、Windows は指定されたプール タグのいずれかを使用してオブジェクトをトレースします

プール タグを指定しない場合、Windows はイメージによって作成されたすべてのオブジェクトをトレースします。

/iImageFile

指定したイメージ ファイルを使用してプロセスによって作成されるオブジェクトにトレースを制限します。 /i パラメーターを使用して指定できるイメージ ファイルは 1 つだけです。

イメージ ファイルを指定しない場合、Windows は指定されたプール タグを持つすべてのオブジェクトをトレースします。

イメージ ファイル (/i) と 1 つ以上のプール タグ (/t) の両方を指定した場合、Windows は、指定されたイメージによって作成されたプール タグのいずれかを持つオブジェクトをトレースします。

/d

オブジェクト参照トレース機能の設定をクリアします。 /ro と共に使用すると、レジストリの設定がクリアされます。

/p

永続。 トレース データは、オブジェクト参照トレースが無効であるか、コンピューターがシャットダウンまたは再起動されるまで保持されます。 既定では、オブジェクトのトレース データはカードオブジェクトが破棄されるときに破棄されます。

/p
プロセスのページ ヒープ検証オプションを設定します。

追加のパラメーターがない場合、 gflags /p はページ ヒープ検証が有効になっているイメージ ファイルの一覧を表示します。

ページ ヒープ検証では、動的ヒープ メモリ操作 (割り当て操作や空き操作など) が監視され、ヒープ エラーが検出されるとデバッガーが中断します。

/disableImageFile
指定したイメージ ファイルのページ ヒープ検証 (標準または完全) を無効にします。

このコマンドは、プロセスの Enable page heap (hpa) フラグ(gflags /iImageFile-hpa) をオフにするのと同じです。 コマンドは同じ意味で使用できます。

/enableImageFile
指定したイメージ ファイルのページ ヒープ検証を有効にします。

既定では /enable パラメーターはイメージ ファイルの 標準 ページ ヒープ検証を有効にします。 イメージ ファイルのフル ページ ヒープ 検証 を有効にするには、コマンドに /full パラメータを追加するか、 /i パラメータを +hpa フラグとともに使用します。

/full
プロセスのページ全体のヒープ検証を有効にします。 フル ページ ヒープの検証では、各割り当ての最後に予約された仮想メモリのゾーンが配置されます。

このパラメーターを使用することは、プロセス (gflags /iImageFile+hpa) の ページ ヒープを有効にする (hpa) フラグをオンにすることと同じです。 )。 コマンドは同じ意味で使用できます。

/backwards
予約済み仮想メモリのゾーンを、最後ではなく割り当ての先頭に配置します。 その結果、デバッガーはバッファーの末尾ではなく、バッファーの先頭でオーバーランをトラップします。 /full パラメーターでのみ有効です。

/random確率
指定した確率に基づいて、割り当てごとに完全または標準のページ ヒープ検証を選択します。

確率 は、ページ全体のヒープ検証の確率を表す 0 から 100 までの 10 進整数です。 100 の確率は /full パラメーターを使用する場合と同じです。 0 の確率は、標準のページ ヒープ検証を使用する場合と同じです。

/sizeSizeStart SizeEnd
指定したサイズ範囲内の割り当てに対してフル ページ ヒープ検証を有効にし、プロセスによる他のすべての割り当てに対して標準ページ ヒープ検証を有効にします。

SizeStartSizeEnd は 10 進整数です。 既定値は、すべての割り当ての標準ページ ヒープ検証です。

/addressAddressStart AddressEnd
指定したアドレス範囲のリターン アドレスが実行時呼び出し履歴にある間に割り当てられたメモリの完全ページ ヒープ検証を有効にします。 これにより、プロセスによる他のすべての割り当てに対する標準ページ ヒープ検証が有効になります。

この機能を使用するには、疑わしい割り当てで関数を呼び出すすべての関数のアドレスを含む範囲を指定します。 呼び出し元関数のアドレスは、疑わしい割り当てが発生したときに呼び出し履歴に配置されます。

AddressStartAddressEnd では、割り当てスタック トレースで検索されるアドレス範囲を指定します。 アドレスは、0xAABBCCDDなどの 16 進数形式で指定されます。

Windows Server 2003 以前のシステムでは /address パラメーターは x86 ベースのコンピューターでのみ有効です。 Windows Vista では、サポートされているすべてのアーキテクチャで有効です。

/dllsDLL[DLL...]
指定された DLL によって要求された割り当てに対するフル ページ ヒープ検証と、プロセスによる他のすべての割り当てに対する標準ページ ヒープ検証を有効にします。

DLL は、ファイル名拡張子を含むバイナリ ファイルの名前です。 指定されたファイルは、実行中にプロセスが読み込む関数ライブラリである必要があります。

/debug
デバッガーの /enable パラメーターで指定されたプロセスを自動的に起動します。

既定では、このパラメーターは NTSD デバッガーを使用し、コマンド ライン ntsd -g -G -x とページ ヒープが有効になっていますが DebuggerCommand 変数を使用して別のデバッガーとコマンド ラインを指定できます。

NTSD の詳細については CDB と NTSD を使用したデバッグ を参照してください。

このオプションは、コマンド プロンプトから開始するのが難しいプログラムや、他のプロセスによって開始されるプログラムに役立ちます。

"DebuggerCommand"
デバッガーとデバッガーに送信されるコマンドを指定します。 この引用符で囲まれた文字列には、デバッガーへの完全修飾パス、デバッガー名、およびデバッガーが解釈するコマンド パラメーターを含めることができます。 引用符は必須です。

コマンドにデバッガーへのパスが含まれている場合、パスに他の引用符を含めることはできません。 他の引用符が表示された場合、コマンド シェル (cmd.exe) はコマンドの解釈を誤ります。

/kdebug
コマンド ライン ntsd -g -G -x を使用して、ページ ヒープを有効にし、NTSD の制御をカーネル デバッガーにリダイレクトして、NTSD デバッガーの下で /enable パラメーターで指定されたプロセスを自動的に起動します。

NTSD の詳細については CDB と NTSD を使用したデバッグ を参照してください。

/unaligned
開始アドレスが 8 バイト ブロックにアラインされていないことを意味する場合でも、各割り当ての末尾をページの境界の末尾に配置します。 既定では、ヒープ マネージャーは、割り当ての開始アドレスが 8 バイト ブロックにアラインされていることを保証します。

このオプションは、1 バイト単位のオフエラーを検出するために使用されます。 このパラメーターを /full パラメーターと共に使用すると、予約済み仮想メモリのゾーンは割り当ての最後のバイトの直後に開始され、プロセスが割り当てを超えて 1 バイトでも読み取りまたは書き込みを試みると、即時エラーが発生します。

/decommit
このオプションは無効になりました。 これは受け入れられますが、無視されます。

Windows 2000 に含まれる PageHeap プログラム (pageheap.exe) は、割り当て後にアクセスできないページを配置することで、ページ全体のヒープ検証を実装しました。 そのツールでは、 /decommit パラメーターは、アクセスできないページの予約済み仮想メモリのゾーンを置き換えました。 このバージョンの GFlags では、予約済み仮想メモリのゾーンを常に使用して、ページ全体のヒープ検証を実装します。

/notraces
実行時スタック トレースを保存しないことを指定します。

このオプションではパフォーマンスが若干向上しますが、デバッグがはるかに困難になります。 このパラメーターは有効ですが、使用しないことをお勧めします。

/fault:
プログラムのメモリ割り当ては、指定したレートで、指定したタイムアウト後に強制的に失敗します。

このパラメーターは、プログラムがメモリ不足の状態で実行されるときに発生する可能性があるメモリ割り当てが失敗するように、テスト対象のイメージ ファイルにヒープ割り当てエラー ("障害挿入" と呼ばれるプラクティス) を挿入します。 このテストは、リソースの解放に失敗するなど、割り当てエラーの処理でエラーを検出するのに役立ちます。

レート

割り当てが失敗する確率を表す 1 から 10000 (100%) までの 10 進整数を指定します。 既定値は 100 (1%)です。

[TimeOut]

プログラムの開始とフォールト 挿入ルーチンの開始の間の時間間隔を決定します。

TimeOut は秒単位で測定されます。 デフォルトは 5 (秒) です。

/leaks
プロセスが終了したときにヒープ リークをチェックします。

/leaks パラメーターは、ページ全体のヒープを無効にします。 /leaks を使用すると、 /full パラメーターと /full パラメーター /backwards など を変更するパラメーターは無視され、GFlags はリーク チェックを使用して標準のページ ヒープ検証を実行します。

/protect
ヒープ内部構造を保護します。 このテストは、ランダム ヒープの破損を検出するために使用されます。 実行が大幅に遅くなる可能性があります。

/no_sync
同期されていないアクセスを確認します。 このパラメーターは、HEAP_NO_Standard Edition RIALIZE フラグを使用して作成されたヒープが異なるスレッドによってアクセスされることを検出した場合に中断を引き起こします。

このフラグを使用して、カスタマイズされたヒープ マネージャーを含むプログラムをデバッグしないでください。 ヒープ アクセスを同期する関数により、ページ ヒープ検証ツールは、存在しない同期エラーを報告します。

/no_lock_checks
クリティカル セクション検証ツールを無効にします。

/?
GFlags のヘルプを表示します。 /p を使用すると、 /? は GFlags のページ ヒープ検証オプションのヘルプを表示します。

コメント

パラメーターを指定せずに gflags と入力すると グローバル フラグ ダイアログ ボックスが開きます。

追加のパラメーターを指定せずに gflags /p と入力すると、ページ ヒープ検証が有効になっているプログラムの一覧が表示されます。

すべてのフラグをクリアするには、 フラグ-FFFFFFFF に設定します。 (設定 フラグ を 0 に設定すると、現在のフラグ値に 0 が追加されます。すべてのフラグがクリアされるわけではありません)。

イメージ ファイルの フラグFFFFFFFF に設定すると、Windows はすべてのフラグをクリアし、イメージ ファイルのレジストリ サブキーの GlobalFlag エントリを削除します。 サブキーの再メイン。

ページ ヒープ /enable 操作の /full/random/size/address、/ dlls パラメーターによって、ページ ヒープ /enable 検証の対象となる割り当てと、使用される検証方法が決 まります。 各コマンドでは、これらのパラメーターの1つだけを使用できます。 既定値は、プロセスのすべての割り当ての標準ページ ヒープ検証です。 再メインパラメーターは、ページ ヒープ検証のオプションを設定します。

GFlags のページ ヒープ機能は、標準の Windows ヒープ マネージャー関数 (HeapAllocGlobalAllocLocalAllocmallocnewnew[]、またはその対応する割り当て解除関数) を使用するヒープ メモリ割り当て、または標準ヒープ マネージャー関数を呼び出すカスタム操作を使用するヒープ メモリ割り当てのみを監視します。

プログラムに対してページ ヒープの完全検証と標準ページのどちらが有効になっているかを確認するには、コマンド ラインで gflags /pと入力します。 結果の表示では、 トレース は、プログラムに対して標準のページヒープ検証が有効になっていることを示し、 完全なトレース は、そのプログラムに対して完全なページヒープ検証が有効になっていることを示します。

/enable パラメーターは、レジストリ内のイメージ ファイルの ページ ヒープの有効化 (hpa) フラグを設定します。 ただし、 /enable パラメーターは、イメージ ファイルの 標準 ヒープ検証をデフォルトでオンにします。これは、 +hpa フラグを指定した /i パラメーターとは異なり、イメージの 満杯 ヒープ検証をオンにします。 ファイル。

標準 ページ ヒープ検証は、割り当ての最後にランダム パターンを配置し、ヒープ ブロックが海容されたときにパターンを分析します。 フル ページ ヒープの検証では、各割り当ての最後に予約された仮想メモリのゾーンが配置されます。

ページ全体のヒープ検証では、システム メモリをすばやく使用できます。 メモリ集中型プロセスに対してページ全体のヒープ検証を有効にするには、 /size または /dlls パラメーターを使用します。

デバッグにグローバル フラグを使用した後、 gflags /p /disable コマンドを送信してページ ヒープの検証をオフにし、関連付けられているレジストリ エントリを削除します。 それ以外の場合は、デバッガーが読み取るエントリがレジストリに再メイン。 このタスクには gflags /i hpa コマンドを使用できません。ページ ヒープの検証はオフになりますが、レジストリ エントリは削除されないためです。

既定では、Windows Vista 以降のバージョンの Windows では、プログラム固有の設定 (イメージ ファイル フラグとページ ヒープ検証設定) が現在のユーザー アカウントに格納されます。

このバージョンの GFlags には、GFlags 用に 開発されている機能を有効にする -v オプションが含まれています。 ただし、これらの機能はまだ完全ではないため、文書化されていません。