CDB のコマンドライン オプション

CDB または NTSD を初めて使用するユーザーは、「CDB と NTSD を使用したデバッグ」セクションから始めてください。

CDB コマンド ラインは次の構文を使用します:

cdb  [ -server ServerTransport | -remote ClientTransport ] 
[ -premote SmartClientTransport ] [-log{a|au|o|ou} LogFile]
[-2] [-d] [-ddefer] [-g] [-G] [-hd] [-lines] [-myob] [-bonc] 
[-n] [-o] [-s] [-v] [-w] [-cf "filename"] [-cfr "filename"] [-c "command"] 
[-robp] [-r BreakErrorLevel]  [-t PrintErrorLevel] 
[ -x{e|d|n|i} Exception ] [-x] [-clines lines] 
[-i ImagePath]  [-y SymbolPath] [-srcpath SourcePath] 
[-aExtension] [-failinc] [-noio] [-noinh] [-noshell] [-nosqm]
[-sdce] [-ses] [-sicv] [-sins] [-snc] [-snul] [-zp PageFile] 
[-sup] [-sflags 0xNumber] [-ee {masm|c++}]
[-e Event] [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv] 
[ -- | -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ] 
[-cimp] [-isd] [-kqm] [-pvr] [-version] [-vf] [-vf:<opts>] [-netsyms:{yes|no}]

cdb -iae 

cdb -iaec KeyString 

cdb -iu KeyString

cdb -QR Server 

cdb -wake pid 

cdb -?

NTSD コマンド ライン構文は、CDB の構文と同じです:

ntsd  [ -server ServerTransport | -remote ClientTransport ] 
[ -premote SmartClientTransport ] [-log{a|au|o|ou} LogFile]
[-2] [-d] [-ddefer] [-g] [-G] [-hd] [-lines] [-myob] [-bonc] 
[-n] [-o] [-s] [-v] [-w] [-cf "filename"] [-cfr "filename"] [-c "command"] 
[-robp] [-r BreakErrorLevel]  [-t PrintErrorLevel] 
[ -x{e|d|n|i} Exception ] [-x] [-clines lines] 
[-i ImagePath]  [-y SymbolPath] [-srcpath SourcePath] 
[-aExtension] [-failinc] [-noio] [-noinh] [-noshell] [-nosqm]
[-sdce] [-ses] [-sicv] [-sins] [-snc] [-snul] [-zp PageFile] 
[-sup] [-sflags 0xNumber] [-ee {masm|c++}] 
[-e Event] [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv] 
[ -- | -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ] 
[-cimp] [-isd] [-kqm] [-pvr] [-version] [-vf] [-vf:<opts>] [-netsyms:{yes|no}]

ntsd -iae 

ntsd -iaec KeyString 

ntsd -iu KeyString

ntsd -QR Server 

ntsd -wake PID 

ntsd -?

NTSD と CDB の唯一の違いは、NTSD が新しいコンソール ウィンドウを生成するのに対し、CDB は呼び出されたウィンドウを継承する点です。 start コマンドを使用して新しいコンソール ウィンドウを生成することもできるため、次の 2 つの構造で同じ結果が得られます。

start cdb [parameters]
ntsd [parameters]

CDB と NTSD コマンドライン オプションの説明は次のとおりです。 -remote-server-g-G オプションでのみ大文字と小文字が区別されます。 最初のハイフンはスラッシュ (/) に置き換えることができます。 追加のパラメーターを取らないオプションは連結できます。そのため、"cdb -o -d -G -g winmine" は "cdb -odGg winmine" と記述できます。

-remote または -server オプションを使用する場合は、コマンド ラインの他のオプションの前に表示する必要があります。 実行可能ファイルを指定する場合は、コマンド ラインの最後に表示する必要があります。実行可能ファイル名の後のテキストは、独自のコマンド ライン パラメーターとして実行可能プログラムに渡されます。

パラメーター

-serverServerTransport
他のデバッガーからアクセスできるデバッグ サーバーを作成します。 使用可能な ServerTransport 値の説明については、「デバッグ サーバーのアクティブ化」を参照してください。 このパラメーターを使用する場合は、コマンド ラインの最初のパラメーターにする必要があります。

-remoteClientTransport
デバッグ クライアントを作成し、既に実行されているデバッグ サーバーに接続します。 可能な ClientTransport 値の説明については、「デバッグ クライアントのアクティブ化」を参照してください。 このパラメーターを使用する場合は、コマンド ラインの最初のパラメーターにする必要があります。

-premoteSmartClientTransport
スマート クライアントを作成し、すでに実行されているプロセス サーバーに接続します。 可能な SmartClientTransport 値の説明については、「スマート クライアントのアクティブ化」を参照してください。

-2
ターゲット アプリケーションがコンソール アプリケーションの場合、このオプションを選択すると、新しいコンソール ウィンドウに表示されます。 (既定では、ターゲット コンソール アプリケーションが CDB または NTSD とウィンドウを共有するようになっています)。

--
クライアント サーバー ランタイム サブシステム (CSRSS) をデバッグします。 詳細については、「CSRSS のデバッグ」を参照してください。

-aExtension
既定の拡張 DLL を設定します。 既定値は userexts です。 "a" の後にスペースを入れてはいけません。また、拡張子 .dll を含めてはなりません。 この既定値の詳細と、他の設定方法については、「デバッガー拡張 DLL の読み込み」を参照してください。

-bonc
このオプションを指定した場合、セッションが開始されるとすぐにデバッガーがターゲットに分割されます。 これは、現在ターゲットに分割されていない可能性があるデバッグ サーバーに接続する場合に特に便利です。

-c "command"
起動時に実行する初期デバッガー コマンドを指定します。 このコマンドは引用符で囲む必要があります。 複数のコマンドはセミコロンで区切ることができます。 (長いコマンド リストがある場合は、スクリプトに含め、$<、$><、$><、$$>< (スクリプト ファイルの実行) コマンドで -c オプションを使用する方が簡単な場合があります)。

デバッグ クライアントを起動する場合、このコマンドはデバッグ サーバーを対象とする必要があります。 .lsrcpath などのクライアント固有のコマンドは使用できません。

-cf "filename"
スクリプト ファイルのパスと名前を指定します。 このスクリプト ファイルは、デバッガーが開始されるとすぐに実行されます。 filename にスペースが含まれる場合は、引用符で囲む必要があります。 パスを省略すると、現在のディレクトリが想定されます。 -cf オプションを使用しない場合は、現在のディレクトリ内の ntsd.ini ファイルがスクリプト ファイルとして使用されます。 ファイルが存在しない場合、エラーは発生しません。 詳細については「スクリプト ファイルの使用」を参照してください。

-cfr "filename"
スクリプト ファイルのパスと名前を指定します。 このスクリプト ファイルは、デバッガーが開始されるとすぐに実行され、ターゲットが再起動されるたびに実行されます。 filename にスペースが含まれる場合は、引用符で囲む必要があります。 パスを省略すると、現在のディレクトリが想定されます。 ファイルが存在しない場合、エラーは発生しません。 詳細については「スクリプト ファイルの使用」を参照してください。

-cimp
実行する明示的なプロセスではなく、DbgSrv の暗黙的なコマンド ラインで開始するように CDB/NTSD に指示します。 このオプションは、dbgsrv -pc のクライアント側です。

-clineslines
リモート デバッグ中にアクセスできるコマンド履歴内のコマンドの概数を設定します。 詳細およびこの番号を変更するその他の方法については、「デバッガー コマンドの使用」を参照してください。

-d
このデバッガーの制御をカーネル デバッガーに渡します。 CSRSS をデバッグする場合、-d が指定されていなくても、この制御リダイレクトは常にアクティブになります。 (このオプションは、リモート デバッグ中は使用できません。代わりに -ddefer を使用してください)。詳細については、「カーネル デバッガーからのユーザー モード デバッガーの制御」を参照してください。 このオプションは、-ddefer オプションや -noio オプションと組み合わせて使用することはできません。

注: カーネル デバッガーとして WinDbg を使用する場合、WinDbg の使い慣れた機能の多くは、このシナリオでは使用できません。 たとえば、[ローカル] ウィンドウ、[逆アセンブリ] ウィンドウ、または [呼び出し履歴] ウィンドウを使用することはできません。また、ソース コードをステップずつ実行することもできません。 これは、WinDbg がターゲット コンピューターで実行されているデバッガー (NTSD または CDB) のビューアーとしてのみ機能するためです。

-ddefer
デバッグ クライアントが接続されていない限り、このデバッガーの制御をカーネル デバッガーに渡します。 (これは、デバッグ サーバーから使用できる -d のバリエーションです)。詳細については、「カーネル デバッガーからのユーザー モード デバッガーの制御」を参照してください。 このオプションは、-d オプションや -noio オプションと組み合わせて使用することはできません。

-eEvent
指定したイベントが発生したことをデバッガーに通知します。 このオプションは、デバッガーをプログラムで起動する場合にのみ使用されます。

-ee {masm|c++}
既定の式エバリュエーターを設定します。 masm を指定すると、MASM 式の構文が使用されます。 c++ を指定すると、C++ 式の構文が使用されます。 -ee オプションを省略すると、MASM 式の構文が既定として使用されます。 詳細については、「式の評価」を参照してください。

-failinc
デバッガーが疑わしいシンボルを無視するようにします。 また、ユーザー モードまたはカーネル モードのミニダンプ ファイルをデバッグする場合、このオプションでは、イメージをマップできないモジュールをデバッガーが読み込めなくなります。 詳細およびその他の制御方法については、「SYMOPT_EXACT_SYMBOLS」を参照してください。

-g
ターゲット アプリケーションの最初のブレークポイントを無視します。 このオプションを使用すると、別のブレークポイントが設定されていない限り、ターゲット アプリケーションの起動後、または CDB のアタッチ後もターゲット アプリケーションが実行を継続します。 詳細については、「初期ブレークポイント」を参照してください。

-G
プロセス終了時の最終的なブレークポイントを無視します。 既定では、CDB はイメージのランダウン プロセス中に停止します。 このオプションでは、子が終了したときに CDB は直ちに終了します。 これは、コマンド sxd epr を入力する場合と同じ効果があります。 詳細については、「例外とイベントの制御」を参照してください。

-hd
デバッグ ヒープを使用しないことを指定します。 詳細については、「CDB を使用したユーザー モード プロセスのデバッグ」を参照してください。

-iImagePath
エラーを生成した実行可能ファイルの場所を指定します。 パスにスペースが含まれる場合は、引用符で囲む必要があります。

-iae
事後分析デバッガーとして CDB をインストールします。 詳細については、「事後デバッグの有効化」を参照してください。

このアクションが成功した場合、メッセージは表示されません。失敗した場合は、エラー メッセージが表示されます。

-iae パラメーターは、他のパラメーターと共に使用しないでください。 このコマンドは実際には CDB を開始しません。

-iaecKeyString
事後分析デバッガーとして CDB をインストールします。 KeyString の内容は、AeDebug レジストリ キーの末尾に追加されます。 KeyString にスペースが含まれる場合は、引用符で囲む必要があります。 詳細については、「事後デバッグの有効化」を参照してください。

このアクションが成功した場合、メッセージは表示されません。失敗した場合は、エラー メッセージが表示されます。

-iaec パラメーターは、他のパラメーターと共に使用しないでください。 このコマンドは実際には CDB を開始しません。

-isd
プロセスの作成に対して CREATE_IGNORE_SYSTEM_DEFAULT フラグをオンにします。

-iuKeyString
ユーザーが URL を使用してデバッガー リモート クライアントを自動起動できるように、デバッガーリモート処理を URL の種類として登録します。 KeyString の形式は remdbgeng://RemotingOption になります。 RemotingOption は、「デバッグ クライアントのアクティブ化」に関するトピックで定義されているトランスポート プロトコルを定義する文字列です。 このアクションが成功した場合、メッセージは表示されません。失敗した場合は、エラー メッセージが表示されます。

-iu パラメーターは、他のパラメーターと共に使用しないでください。 このコマンドは実際には CDB を開始しません。

-kqm
CDB/NTSD を静音モードで起動します。

-lines
ソース行のデバッグを有効にします。 このオプションを省略した場合、ソース デバッグを許可する前に、.lines (ソース行のサポートの切り替え) コマンドを使用する必要があります。 これを制御するその他の方法については、「SYMOPT_LOAD_LINES」を参照してください。

-log{a|au|o|ou} LogFile
ログ ファイルへの情報の記録を開始します。 指定したファイルが既に存在する場合、-logo が使用されている場合は上書きされ、-loga が使用されている場合は出力がファイルに追加されます。 -logau オプションと -logou オプションはそれぞれ -loga および -logo に似ていますが、ログ ファイルが Unicode ファイルである点が異なります。 詳細については、「CDB にログ ファイルを保存する」を参照してください。

-myob
dbghelp.dll とバージョンが一致しない場合、デバッガーは引き続き実行されます。 (-myob スイッチがない場合、これは致命的なエラーと見なされます)。

-n
ノイズ シンボルの読み込み: シンボル ハンドラーからの詳細な出力を有効にします。 詳細およびその他の制御方法については、「SYMOPT_DEBUG」を参照してください。

-netsyms {yes|no}
ネットワーク パスからのシンボルの読み込みを許可または禁止します。

-noinh
デバッガーによって作成されたプロセスがデバッガーからハンドルを継承できないようにします。 これを制御する他の方法については、「CDB を使用したユーザー モード プロセスのデバッグ」を参照してください。

-noio
デバッグ サーバーが入力または出力に使用されないようにします。 入力はデバッグ クライアント (および -c コマンド ライン オプションで指定された初期コマンドまたはコマンド スクリプト) からのみ受け入れられます。

すべての出力はデバッグ・クライアントに向けられます。 サーバーにNTSDが使用されている場合、コンソールウィンドウはまったく作成されない。 詳細については、「デバッグ サーバーのアクティブ化」を参照してください。 このオプションは、-d オプションや -ddefer オプションと組み合わせて使用することはできません。

-noshell
すべての .shell コマンドを禁止します。 この禁止は、新しいデバッグ セッションが開始された場合でも、デバッガーが実行されている限り続きます。 詳細およびシェル コマンドを無効にするその他の方法については、「シェル コマンドの使用」を参照してください。

-nosqm
テレメトリ データの収集とアップロードを無効にします。

-o
ターゲット アプリケーションによって起動されたすべてのプロセス (子プロセス) をデバッグします。 既定では、デバッグしているプロセスによって作成されたプロセスは、通常どおりに実行されます。 これを制御する他の方法については、「CDB を使用したユーザー モード プロセスのデバッグ」を参照してください。

-pPID
デバッグする 10 進数のプロセス ID を指定します。 これは、すでに実行中のプロセスをデバッグするために使用されます。 詳細については、「CDB を使用したユーザー モード プロセスのデバッグ」を参照してください。

-pb
ターゲット プロセスにアタッチするときにデバッガーが最初のブレークインを要求できないようにします。 これは、アプリケーションが既に中断されている場合や、ターゲットにブレークイン スレッドを作成しないようにする場合に便利です。

-pd
デバッグ セッションの終了時にターゲット アプリケーションが終了しないようにします。 詳細については、「CDB でのデバッグ セッションの終了」を参照してください。

-pe
ターゲット アプリケーションが既にデバッグ中であることを示します。 詳細については、「ターゲット アプリケーションへの再アタッチ」を参照してください。

-pnName
デバッグするプロセスの名前を指定します。 (この名前は一意である必要があります) これは、既に実行されているプロセスをデバッグするために使用されます。

-pr
デバッガーがターゲット プロセスにアタッチしたときに、ターゲット プロセスの実行を開始させます。 これは、アプリケーションが既に中断されていて、実行を再開したい場合に便利です。

-psnServiceName
デバッグするプロセスに含まれるサービスの名前を指定します。 これは、すでに実行中のプロセスをデバッグするために使用されます。

-ptSeconds
ブレーク タイムアウトを秒単位で指定します。 既定値は 30 です。 詳細については、「ターゲットの制御」を参照してください。

-pv
デバッガーがターゲット プロセスに非侵襲的に接続することを指定します。 詳細については、「非侵襲的デバッグ (ユーザー モード)」を参照してください。

-pvr
ターゲット プロセスが中断されていないことを除き、-pv と同様に動作します。

-QRServer
指定したネットワーク サーバーで実行されているすべてのデバッグ サーバーを一覧表示します。 サーバーの前の二重円記号 (\) は省略可能です。 詳細については、「デバッグ サーバー の検索」を参照してください。

-QR パラメーターは、他のパラメーターと共に使用できません。 このコマンドは実際には CDB を開始しません。

-rBreakErrorLevel
ターゲットがデバッガーに侵入する原因となるエラー レベルを指定します。 これは、0、1、2、または 3 に等しい 10 進数です。 使用できる値は次のとおりです。

Value 定数 説明

0

NONE

エラーが発生しても中断しないでください。

1

ERROR

ERROR レベルのデバッグ イベントで中断します。

2

MINORERROR

MINORERROR および ERROR レベルのデバッグ イベントで中断します。

3

警告

WARNING、MINORERROR および ERROR レベルのデバッグ イベントで中断します。

このエラー レベルは、Microsoft Windows のチェック ビルドでのみ意味を持ちます。 既定値は 1です。 チェック ビルドは、Windows 10 バージョン 1803 以前の古いバージョンの Windows で使用することができました。

-robp
これにより、CDB は読み取り専用メモリ ページにブレークポイントを設定できます。 (既定では、このような操作は失敗します)。

-s
遅延シンボル読み込みを無効にします。 これにより、プロセスの起動が遅くなります。 詳細およびその他の制御方法については、「SYMOPT_DEFERRED_LOADS」を参照してください。

-sdce
シンボルのロード中にデバッガーに ファイル アクセス エラー メッセージを表示させます。 詳細およびその他の制御方法については、「SYMOPT_FAIL_CRITICAL_ERRORS」を参照してください。

-ses
デバッガーがすべてのシンボル ファイルを厳密に評価し、疑わしいシンボルを無視するようにします。 詳細およびその他の制御方法については、「SYMOPT_EXACT_SYMBOLS」を参照してください。

-sflags 0xNumber
すべてのシンボル ハンドラー オプションを一度に設定します。 数値0x で始まる 16 進数にする必要があります。0x を含まない 10 進数は許可されますが、シンボル オプションはバイナリ フラグであるため、16 進数をお勧めします。 このオプションは、すべてのシンボル ハンドラーの既定値をオーバーライドするため、注意して使用する必要があります。 詳細については、「シンボル オプションの設定」を参照してください。

-sicv
シンボル ハンドラーが CV レコードを無視するようにします。 詳細およびその他の制御方法については、SYMOPT_IGNORE_CVREC を参照してください。

-sins
デバッガーがシンボル パスと実行可能イメージ パスの環境変数を無視するようにします。 詳細については、「SYMOPT_IGNORE_NT_SYMPATH」を参照してください。

-snc
デバッガーが C++ 変換をオフにします。 詳細およびその他の制御方法については、「SYMOPT_NO_CPP」を参照してください。

-snul
修飾されていない名前の自動シンボル読み込みを無効にします。 詳細およびその他の制御方法については、「SYMOPT_NO_UNQUALIFIED_LOADS」を参照してください。

-srcpathSourcePath
ファイルの検索パスを指定します。 複数のパスはセミコロン (;) で区切ります。 パスにスペースが含まれる場合は、引用符で囲む必要があります。 このパスを変更する方法の詳細については、「ソース パス」を参照してください。

-sup
シンボル ハンドラーが、シンボル検索のたびにパブリック シンボル テーブルを検索するようにします。 詳細およびその他の制御方法については、「SYMOPT_AUTO_PUBLICS」を参照してください。

-tPrintErrorLevel
デバッガーにエラー メッセージを表示させるエラー レベルを指定します。 これは、0、1、2、または 3 に等しい 10 進数です。 使用できる値は次のとおりです。

Value 定数 説明

0

NONE

エラーを表示しません。

1

ERROR

ERROR レベルのデバッグ イベントを表示します。

2

MINORERROR

MINORERROR および ERROR レベルのデバッグ イベントを表示します。

3

警告

WARNING、MINORERROR、および ERROR レベルのデバッグ イベントを表示します。

このエラー レベルは、Microsoft Windows のチェック ビルドでのみ意味を持ちます。 チェック ビルドは、Windows 10 バージョン 1803 より前の古いバージョンの Windowsで 利用できました。 既定値は 1です。

-v
デバッガーからの詳細出力を有効にします。

-version
デバッガーのバージョン文字列を出力します。

-vf
ApplicationVerifier の既定の設定を有効にします。

-vf:<opts>
指定された ApplicationVerifier 設定を有効にします。

-w
別の VDM で 16 ビット アプリケーションをデバッグするように指定します。

-wakePID
プロセス ID が PID で指定されているユーザー モード デバッガーのスリープ モードを終了させます。 このコマンドは、スリープ モード中にターゲット コンピューターで発行する必要があります。 詳細については、「カーネル デバッガー からのユーザーモード デバッガーの制御」を参照してください。

-wake パラメーターは、他のパラメーターと共に使用しないでください。 このコマンドは実際には CDB を開始しません。

-x{e|d|n|i} 例外
指定したイベントが発生したときのデバッガーの動作を制御します。 例外には、例外番号またはイベント コードを指定します。 このオプションを複数回指定して、さまざまなイベントを制御できます。 この設定の詳細と、これらを制御する他の方法については、「例外とイベントの制御」を参照してください。

-x
アクセス違反の例外に対する初回中断を無効にします。 2 回目にアクセス違反が発生すると、デバッガーが中断されます。 この設定は -xd av と同じです。

-ySymbolPath
シンボルの検索パスを指定します。 複数のパスはセミコロン (;) で区切ります。 パスにスペースが含まれる場合は、引用符で囲む必要があります。 詳細およびこのパスを変更する他の方法については、「シンボル パス」を参照してください。

-zDumpFile
デバッグするクラッシュ ダンプ ファイルの名前を指定します。 パスとファイル名にスペースが含まれる場合は、引用符で囲む必要があります。 複数の -z オプションを含め、その後にそれぞれ異なる DumpFile 値を追加することで、複数のダンプ ファイルを一度に開くことができます。 詳細については、「ユーザー モード ダンプ ファイルの分析」を参照してください。

-zpPageFile
変更されたページ ファイルの名前を指定します。 これは、ダンプ ファイルをデバッグしていて、.pagein (Page In Memory) コマンドを使用する場合に便利です。 標準の Windows ページ ファイルで -zp を使用することはできません。特別に変更されたページ ファイルのみを使用できます。

executable
実行可能プロセスのコマンド ラインを指定します。 これは、新しいプロセスを起動してデバッグするために使用されます。 これは、コマンド ラインの最後の項目である必要があります。 実行可能ファイル名の後のすべてのテキストは、その引数文字列として実行可能ファイルに渡されます。

-?
コマンドラインのヘルプ テキストを表示します。

[スタート | 実行] またはコマンド プロンプト ウィンドウから デバッガーを起動する場合、アプリケーションのファイル名の後にターゲット アプリケーションの引数を指定します。 次に例を示します。

cdb myexe arg1arg2