WinDBG

先日インストールしたWinDBG。ヘルプファイルを順番に読んでいく。まぁ英語の勉強ですな。興味のないところは飛ばしてありますんで、ヘルプファイルと突き合わせてご覧ください。

いやぁ。こうやってみると、知らんコマンド、意味のわからんコマンドがまだまだいっぱいあるわ。

ENTER (直前のコマンドの繰り返し)

ENTER keyはあなたがタイプした直前のコマンドを繰り返します。

$<, $><, $$<, $$><, $>a< (スクリプトファイルの実行)

$<, $><, $$<, $$><, $>a<コマンドは、指定したスクリプトファイルの内容を読み込み、デバッガのコマンドの入力として使います。

? (コマンドヘルプ)

はてなマーク (?)記号は、すべてのコマンドとオペレータを表示します。

? (Expressionの評価)

はてなマーク (?) コマンドは、expressionの値の評価と表示をします。

?? (C++ Expressionの評価)

二つのはてなマーク (??) コマンドは、C++ Expressionルールに従った Expressionの値の評価と表示をします。

# (逆アセンブリパターンの検索)

シャープ記号 (#) コマンドは、逆アセンブリコードの中から特定のパターンを検索します。

|| (システム状態)

二つの 縦線 (||) コマンドは、指定したシステム または、あなたが現在デバッグしているすべてのシステムの状態 を表示します。

||s (現在のシステムのセット)

||s コマンドは現在のシステム番号のセットと表示をします。

| (プロセス状態)

パイプ (|) コマンドは、指定したプロセス または、あなたが現在デバッグしているすべてのプロセスの状態を表示します。

|s (カレントのプロセスのセット)

|s コマンドは、カレントのプロセス番号をセットと表示をします。

~ (スレッド状態)

チルダ (~)コマンドは、指定したスレッド またはカレントのプロセスのすべてのスレッドの状態を表示します。

~e (スレッド指定コマンド)

~eコマンドは、指定したスレッドまたはターゲットプロセスのすべてのスレッドに、ひとつ以上のコマンドを実行します。

~f (スレッドの凍結)

~f コマンドは、指定されたスレッドを凍結させ、それが解除されるまで待ちます。(?)

~u (スレッドの凍結解除)

~uコマンドは、指定したスレッドを凍結解除をします。(?)

~n (スレッドのサスペンド)

~nコマンドは、指定したスレッドの実行をサスペンドします。

~m (スレッドのレ再開)

~mコマンドは、指定したスレッドの実行をレ再開します。

~s (カレントスレッドのセット)

~sコマンドはカレントスレッドのナンバーをセット、または表示します。

~s (カレントプロセッサの変更)

~sコマンドは、マルチプロセッサシステムのとき、どのプロセッサをデバッグするのかをセットします。

a (アセンブル)

aコマンドは、命令ニーモニックをアセンブルし、結果命令コードをメモリに配置します。

ad (エイリアスの削除)

adコマンドは、エイリアスリストからエイリアスを削除します。

ah (アサーションハンドリング)

ahコマンドは、指定したアドレスのアサーションハンドリングの状態をコントロールします。

al (エイリアスのリスト)

alコマンドは、現在、定義されている、ユーザーが名前をつけたエイリアスのすべてのリストを表示します。

as, aS (エイリアスのリスト)

asとaSコマンドは新しいエイリアスの定義したり、既存のものの再定義をします。

ba (アクセスでのブレーク)

baコマンドは、データブレークポイントをセットします。このブレークポイントは指定したメモリがアクセスされた時にトリガされます。

bc (ブレークポイントのクリア)

bcコマンドは、システムから前にセットしたブレークポイントを永久に削除します。

bd (ブレークポイントの無効化)

bdコマンドは、以前にセットしたブレークポイントを無効化します。削除ではありません。

be (ブレークポイントの有効化)

beコマンドは、以前に無効化したひとつ以上のブレークポイントを復元します。

bl (ブレークポイントリスト)

blコマンドは、存在するブレークポイントの情報をリストで表示します。

bp, bu, bm (ブレークポイントのセット)

bp, bu, bmコマンドはひとつ以上のソフトウエアブレークポイントをセットします。位置、条件、違った種類のソフトウエアブレークポイントをセットするオプションなどを組み合わせることができます。

br (ブレークポイントの再番号振り)

brコマンドは、ひとつ以上のブレークポイントの再番号振りをします。

c (メモリの比較)

cコマンドは、2つのメモリエリアの値を比較します。

d, da, db, dc, dd, dD, df, dp, dq, du, dw, dW, dyb, dyd (メモリの表示)

d*コマンドは、指定された範囲のメモリの内容を表示します。

dda, ddp, ddu, dpa, dpp, dpu, dqa, dqp, dqu (参照メモリの表示)

dda, ddp, ddu, dpa, dpp, dpu, dqa, dqp, dquコマンドは、指定した位置のポインタ、ポインタの指し示す位置を表示して、さまざまなフォーマットでその場所のメモリを表示します。

dds, dps, dqs (ワードとシンボルの表示)

dds, dps, dqsコマンドは、指定された範囲のメモリの内容を表示する。このメモリはシンボルテーブルのアドレスのシリーズとみなされます。(?)関連するシンボルはとりあえず表示されます。

dg (セレクターの表示)

dgコマンドは、指定したセレクターのセグメントディスクリプターを表示します。

dl (リンクされたリストの表示)

dlコマンドはLIST_ENTRYやSINGLE_LIST_ENTRYのリンクされたリストを表示します。

ds, dS (文字列の表示)

dstとdSコマンドは、STRING, ANSI_STRING, UNICODE_STRING構造体を表示します。(これらのコマンドはnull区切り文字の文字列は表示しません。)

dt (型の表示)

dtコマンドは、ローカル変数、グローバル変数やデータタイプの情報を表示する。これは、単純データ型だけでなく、構造体や共用体も表示できます。

dv (ローカル変数の表示)

dvコマンドは、カレントスコープ内のローカル変数の名前と値を表示する。

e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza, ezu (値の代入)

e*コマンドは、指定した値をメモリに代入する。

f, fp (メモリで埋める)

fとfpコマンドは、繰り返しパターンで指定したメモリ範囲を埋める。

g (実行)

gコマンドは指定したプロセスやスレッドの実行を開始する。実行はプログラムの終了、ブレークポイントに当たる、または他のイベントがデバッガを止めるときに停止します。

gc (条件付きブレークポイントからの実行)

gcコマンドは、事前にブレークポイントにあたる(ステップ、トレースそまたは自由な実行)など同じ方法の条件付きブレークポイントから実行を再開します。

gh (例外をハンドルして実行)

ghコマンドは、指定したスレッドの例外をハンドルされたものとしてマークし、例外が発生したインストラクションから実行を再開します。

gn, gN (例外をハンドルされないものとして実行)

gn, gNコマンドは、例外がハンドルされたとマークすることなしにスレッドの実行を続けます。これはアプリケーションの例外ハンドラが例外をハンドルすることを許します。

gu (上に行く)

guコマンドは、現在の関数が終了するまで実行します。

ib, iw, id (ポートから入力)

ib, iw, idコマンドは、選択したポートから、byte, word, double wordを読んで表示します。

j (If - Else 実行)

jコマンドは指定された表現の評価によって、指定したひとつのコマンドを条件付きで実行します。

k, kb, kd, kp, kP, kv (スタックバックトレースの表示)

k*コマンドは関係する情報とともに指定されたスレッドのスタックフレームを表示します。

l+, l- (ソースオプションのセット)

l+, l-コマンドはソース表示の操作をするソース行オプションと、プログラム ステップオプションをセットします。

ld (シンボルのロード)

ld コマンドは、指定したモジュールのシンボルをロードして、すべてのモジュールの情報を更新します。

lm (読み込まれたモジュールのリスト)

lm コマンドは指定した読み込まれたモジュールを表示します。出力にはモジュールの状態とパスが含まれます。

ln (一番近いシンボルのリスト)

ln コマンドは指定されたアドレスに近いシンボルを表示します。

ls, lsa (ソース行のリスト)

lsとlsaコマンドは、現在のソースファイルと現在のソースの行番号から一連の行をを表示します。

lsc (カレントソースのリスト)

lscは現在のソースファイルの名前と行番号を表示します。

lse (ソースエディタの起動)

lseコマンドは、カレントのソースファイルのためにエディターを開きます。

lsf, lsf- (ソースファイルの読み込み、解放)

lsfとlsf-コマンドはソースファイルを読んだり解放したりします。

lsp (ソース行数のセット)

lspコマンドは、ステップスルーをしたり、コードを実行したり、lsやlsaコマンドを使ったりして、ソースコードを表示するとき、何行表示するかをコントロールします。

m (メモリの移動)

mコマンドは、メモリの内容をある位置から他の位置へコピーします。

n (進数のセット)

nコマンドは、指定した数値や現在の数字を表示するときのデフォルトの進数をセットします。

ob, ow, od (ポートへ出力)

ob, ow, odコマンドは、選択したポートへ、byte, word, double wordを送信します。

p (ステップ)

pコマンドは、単一のインストラクションまたはソース1行を実行し、すべてのレジスタやフラグの結果の値を表示します。

pa (アドレスへステップ)

paコマンドは、指定したアドレスに到達するまでプログラムを実行して、それぞれのステップを表示します。

pc (次のcall へのステップ)

pcコマンドは、call インストラクションに到達するまでプログラムを実行します。

pct (次のcallまたはreturnへのステップ)

pctコマンドは、callインストラクションまたは、returnインストラクションに到達するまで、プログラムを実行します。

ph (次の分岐インストラクションへのステップ)

phコマンドは、条件、条件なし分岐、call、return、システムコールなど、すべての種類の分岐インストラクションまでプログラムを実行します。

pt (次のreturnへのステップ)

ptコマンドは、returnインストラクションに到達するまでプログラムを実行します。

q, qq (終了)

qとqqコマンドは、デバッグセッションを終了します。(CDBとKDではこのコマンドはデバッガ自身も終了します。WinDBGではこのコマンドは、デバッガを休眠モードに戻します。(休眠モード:デバッガが走っているがターゲットやアクティブなセッションがない状態)

qd (終了と切り離し)

qdコマンドはデバッグセッションを終了し、すべてのユーザーモード ターゲット アプリケーションを走った状態にしておきます。(CDBとKDではこのコマンドはデバッガ自身も終了します。WinDBGではこのコマンドは、デバッガを休眠モードに戻します。)

r (レジスタ)

rコマンドは、レジスタ、浮動小数点レジスタ、フラグ、仮想レジスタ、固定名のエイリアスを変更表示します。

rdmsr (MSRの読み込み)

rdmsrコマンドは、Model-Specific Register (MSR)の値を指定したアドレスから読み込みます。

rm (レジスタ マスク)

rmコマンドは、レジスタ 表示マスクを変更表示します。このマスクはrコマンドでレジスタをどのように表示するのかを操作します。

s (メモリの検索)

sコマンドは特定のバイト パターンを見つけるためにメモリを検索します。

so (カーネルデバッグ オプションのセット)

soコマンドはカーネルデバッグ オプションをセットや表示します。

sq (Quiet モードのセット)

sqコマンドは、quietモードのOn、Offを切り替えます。

ss (シンボル接尾辞のセット)

ssコマンドは、数値表現のシンボルマッチで使用する接尾辞の値をセット、表示します。

sx, sxd, sxe, sxi, sxn, sxr, sx- (例外のセット)

sx*コマンドは、デバッグしているアプリケーションで例外が発生したり、イベントが発生したりしたときのデバッガの動作を操作します。

t (トレース)

tコマンドは、単一のインストラクションやソース行を実行し、すべてのレジスタやフラグの値の結果を表示します。サブルーチンコールや、インタラプトが発生したときは、それらのステップもトレースされます。

ta (アドレスへのトレース)

taコマンドは、指定したアドレスに到達するまでプログラムを実行して、それぞれのステップを表示します。(呼び出された関数の中のステップも含みます。)

tb (次の分岐へのトレース)

tbコマンドは、分岐インストラクションに到達するまで、プログラムを実行します。

tc (次のcallへのトレース)

tcコマンドは、call インストラクションに到達するまで、プログラムを実行します。

tct (次のcall またはreturnへのトレース)

tctコマンドは、callインストラクションまたは、returnインストラクションに到達するまで、プログラムを実行します。

th (次の分岐インストラクションへのトレース)

thコマンドは、条件、条件なし分岐、call、return、システムコールなど、すべての種類の分岐インストラクションまで、プログラムを実行します。

tt (次のreturnへのトレース)

ttコマンドは、returnインストラクションに到達するまで、プログラムを実行します。

u (アンアセンブル)

uコマンドは、メモリ上の指定したプログラムコードのアセンブリ翻訳を表示します。

uf (アンアセンブル関数)

ufコマンドは、指定した関数のアセンブリ翻訳を表示します。

ur (Real Mode BIOSのアンアセンブル)

urコマンドは、指定した16ビットreal-modeコードのアセンブリ翻訳を表示します。

ux (x86 BIOSのアンアセンブル)

uxコマンドはx86ベースのBIOSコードのインストラクションセットを表示します。

vercommand (デバッガコマンドラインの表示)

vercommandコマンドは、開いているデバッガのコマンドを表示します。

version (デバッガバージョンの表示)

versionコマンドは、デバッガとすべての読み込まれている拡張DLLのバージョン情報を表示します。このコマンドはターゲットコンピュータのオペレーティングシステムのバージョンも表示します。

vertarget (ターゲットコンピュータのバージョンの表示)

vertargetコマンドは、ターゲットコンピュータのMicrosoft Windows オペレーティングシステムの現在のバージョンを表示します。

wrmsr (MSRの書き出し)

wrmsrコマンドは、指定したアドレスのModel-Specific Register (MSR)に値を書き込みます。

wt (トレースとデータのウォッチ)

wtコマンドは、このコマンドを関数呼び出しの始めで実行したとき、関数全体を実行し、統計を表示します。

x (シンボルの検査)

xコマンドは、指定したパターンにマッチするすべてのコンテンツに含まれるシンボルを表示します。

z (その間だけ実行)

zコマンドは指定された条件がtrueの間、コマンドを条件付きで実行します。

トラックバック(1)

トラックバックURL: http://www.cagylogic.com/cgi-bin/MovableType/mt-tb.cgi/1388

2009年2月1日から2月28日のアクセス数Top10です。 ... 続きを読む

コメント(2)

すげーなつかしい香りがプンプンしました。

ここ数年まともにプログラム組んでませんが(今はただのSIer)、昔はこんなんでしたねーっ。

すげー、ノスタルジックです。

もう、VC++みたいなIDEしか使えませんけど..

SIerでも、WinDBGくらい使ってクラッシュダンプ読め、という、社会への警鐘の記事ということで(笑)
懐かしいって。。。
ばりばり現役ですよ、WinDBGは。最近はManagedや64Bitやらデバッグすることはいっぱいありますよ。

コメントする

ウェブページ

カテゴリ

アーカイブ

2010年3月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

このブログ記事について

このページは、が2008年10月15日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「WinDBG List of Tools and Documentation」です。

次のブログ記事は「BELUGAmkII 特攻空母ベルーガ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。