WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、WinDBGの、转:のhttp: //www.cnblogs.com/kekec/archive/2012/12/02/2798020.html
#デバッグコマンドウィンドウ
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++
重要#
(1)標準コマンド、コマンド要素とコマンドの拡張にコマンドをWINDBG。
標準コマンドは、基本的なデバッグ機能は大文字と小文字を区別しません提供します。例えば:BP G DT DV K、等
元のコマンドは、標準的なコマンドによって提供されていない機能を提供するだけでなく、内蔵の、デバッグエンジンから始まります。.sympath .reloadなどとして、
動的負荷拡張モジュールを達成するために、拡張デバッグ機能の特定の態様のための拡張コマンドは、で開始します!このような!分析などなど
デバッグ状態に入るとき(2)、トランスポートは、繰り返しコマンド上で直接実行することができる。下矢印キーは、以前に入力したコマンドを参照して選択することができます
(3)マジックタブコマンド終了を実行するためのキーと、ESCは、現在のコマンドのテキスト入力ボックスをオフにし
(4)セパレータとして、複数のコマンドを同じ行に入力することができます
(5)図赤いボックス" 0:000。" [0は現在のデバッグ・セッションのプロセスIDであり、000は、セッションをデバッグするスレッドの数です]
(6)コマンドプロンプトがコマンドを入力することも、コマンド入力ボックスが、* * BUSY表示されますが、コマンドは即時に実行されないときは、windbgのを待つためにアイドル時間を実行するために入りました。
あなたは長い未完成を終了するためのコマンドを破る+ Ctrlキーを使用することができます
#デバッグを有効にします
windbgのメモ帳を使用してデバッグを開始するために//「メモ帳」の引数をwindbgの
実行中のプロセスにアタッチする4200 // windbgの-p PID windbgのは4200であります
「notepad.exeを」// windbgのは、実行中のメモ帳に付着する-pnプロセスwindbgのが呼び出されます
windbgの-z "C:\ mydumpfile.dmp" //デバッグmydumpfile.dmpファイル
このコマンドを使用する場合// 4220 .attach 0n4220は小数点PID、追加のデバッグとして、あなたは最初のデバッグセッションを存在している必要があります
.detach //別のデバッグ
.restart //再起動してデバッグ
.kill //現在のデバッグの終わりを強制
Q //終了windbgの
#ヘルプの表示
?//すべての標準のコマンドをプリントアウト
.help //は、すべてのコマンドの元を出力します
.hh //開くCHMヘルプファイルをwindbgの
コマンド/?// printコマンドのコマンド固有のパラメータの使用
#コメント文字
*行全体//コメント
$$ //コメント(セミコロンが発生しました)
#設定デバッグ環境
.sympath //現在のシンボルの検索パスを表示
.sympath C:シンボル検索パスを設定します\記号//:C:\シンボル
.sympath + C:\記号// C:シンボルセットの検索パスに追加\記号
.symfix //シンボル検索パスに設定されています。SRV * WinDbgのインストールディレクトリ\交響曲*のhttp://msdl.microsoft.com/download/symbols
.symfix F:\記号が//シンボル検索パスに設定されています。SRV * F:\記号*のhttp://msdl.microsoft.com/download/symbols
.symfix + F:\記号が//意志のSRV *のF:\記号*のhttp://msdl.microsoft.com/download/symbolsは、シンボル検索パスセットに追加
.srcpath //現在のソースファイルの検索パスを表示
.srcpath F:\ SRC //ソースファイルの検索パスが設定されます。f:\ SRC
.srcpath + F:\ SRC // fは:\ SRCソース・ファイルの検索パスに追加設定します
.exepath //ビュー実行可能な検索パス
.exepath F:F:\ binに\ビンは//実行ファイルへのパスを見つけます
.exepath + F:\ビン// F:\ binが実行可能な検索パスセットに追加
#記号は、ロードして表示します
バックトレースコマンド(K *)とようにコマンド(U)とを分解:LDを用い、.reload直接シンボルファイルをロードコマンドに加えて、コマンド使用されるシンボルのいくつかはまた、などのシンボルをロードするためのデバッガをトリガすることができます。
それは、モジュールのロードイベントを受信したとき、それは通常のシンボルをロードされていない、シンボルの状態は延期(遅延ロード)として示されている遅延ロード戦略スタイルのシンボルを使用して、windbgのデフォルトは注目に値します。
.symopt //全てのシンボルの現在のオプションを表示します
.symopt +フラグ//シンボルのオプションを追加
.symopt-フラグ//オプション記号を削除
すべてのモジュールは、ld * //ロードシンボル
LDのkernel32のは// kernel32.dllののシンボルをロード
.reload //すべてのモジュールのシンボル情報を読み込みます
.reload / F / V // F:詳細モード:即時モードvを強制
//指定したモジュールのシンボル情報を読み込む: "verifier.dllのSystem32 \ \ \ WINDOWS C" @ .reload / F
X *!//リストのシンボル情報を、対応するすべてのモジュール
LM //リストの情報シンボルは、すべてのモジュールに対応します
X ConsoleTest!* //リストのすべてのシンボルConsoleTestモジュール
X ConsoleTest!* //すべてのシンボルがConsoleTestモジュールの冒頭に記載されている追加
X / T / VのConsoleTest!* //バンドデータの種類、サイズ、および情報シンボルの種類は、すべてのシンボルは、モジュールConsoleTestに記載されています
すべての単語のシンボルLOADLIBを含むX KERNEL32!* LOADLIB * //リストkernel32のモジュール
U //デコンパイル
#プロセスとスレッド
| //デバッグプロセスを示しています
| * //デバッグプロセスを示しています
| N // Nデバッグプロセスの序数を参照してください。
| Ns個//デバッグプロセスの現在のプロセスの切り替えシーケンス番号N
//スレッド表示〜
〜* //すべてのスレッド
〜* K //すべてのスレッドがスタック情報
〜* R //すべてのスレッドが情報を登録します
〜//現在のスレッドを表示
〜#//ビューは、現在のスレッドまたは異常事象の原因となります
〜N // Nスレッドの注文番号を表示します
~~ [N] //ビューのスレッドIDは、n個のスレッドです
現在のスレッドのスレッドのデバッグの順序を切り換える〜Nsの// N番号
序数を凍結//〜N fは、N個のスレッドです
〜N uが//解凍序数Nのスレッド
〜N nは//序数Nスレッドを中断
〜N mは、序数N個のスレッドを再開します//
#ブレークポイント
BL //すべてのブレークポイントをリスト
BC * //明確なすべてのブレークポイント
紀元前1 //クリアブレークポイント1
// 1 2 5 BC 1号、2号、5号ブレークポイントをクリア
* //すべてのブレークポイントを有効にします
1 //ブレークポイント番号1を有効にします
1 2 3 5は、// 1号、2号、5号ブレークポイントを有効にします
BD * //すべてのブレークポイントを無効にします
BD 1 //無効にブレークポイント1
BD 1 2 5 // 1号、2号、5号ブレークポイントを無効にします
BP 7c801b00 //アドレス7c801b00にブレークポイントを置きます
BP `ConsoleTest.cpp:36` // ConsoleTest.cppの行36にブレークポイントを置きます
bpのメインは//メイン関数の先頭にブレークポイントを配置します
BP CSecondLoader :: CSecondLoader //コンストラクタ場所CSecondLoaderにブレークポイント
BP `ConsoleTest.cpp:40` "J(POI(MyVarという)> 5) ''; 'G'" //条件付きブレークポイントのMyVar> 5、空のステートメントの実装(;)、そうでない場合は、オフに生き続けます
BP `ConsoleTest.cpp:40` "J @eax = 0xA3の ''; 'G'" //条件付きブレークポイントレジスタEAX値0xA3のオフ生きます
BU //ブレークポイントを保存し、BPとしての使用
BM ADD_ * //はADD_機能の先頭にマッチし、これらの機能は、の先頭にブレークポイントでマークされています
BA W4 0483dfe0 //停止時に0483dfe0ための書き込みアドレス
// BA [R | W | E] [サイズ] ADDR [R =実行= E、書き込み= W、読み取り/書き込み]サイズ= [1 | 2 | 4バイト]
#デバッグ実行制御
G //ゴー(F5)
gHのgH //デバッガに戻りますが、この例外を処理された強制的にコマンドを実行します。[例外が処理します]
//は、(デバッガが例外を処理したと主張しているため)、デバッグ対象の回復が続くこの応答例外を受信した後に分配システムを停止します
//しかし、まだ異常な状態のために、異常が原因で発生することができ、次に再配布、WinDBGのは、コマンドモードに再び中断しました。
gNを//【例外が処理されないで行きます】
//デバッガが例外リターンを処理しません強制するのGnコマンドを実行すると、システムはさらに、例外を配布します、
他のデバッガが扱うない、そして最終的に終了しない場合//プログラムは、ダイアログボックスをポップアップ表示されます。
現在の機能は[上がる]とき区は//完全に停止を行います
P //シングルステップ実行(F10)[ステップ]
P 2 // 2は、ステップ数であります
次の停留所への関数呼び出しのPC //実行は、[次のコールにステップイン]
[住所へのステップ]を停止7c801b0b対処するためのPA 7c801b0b //実行
T //(F11)【トレース】へのステップ
次のエントリ点TC //実行時に[次のコールへのトレース]を停止します
[住所にトレース] 7c801b12を停止する7c801b12 //実行に取り組むTA
変数#を見ます
nRet //ビュー変数nRet型と値DT
DV //すべてのローカル変数、関数の引数の現在の機能を表示します
DV N * //、すべてのn個の機能で始まり、現在のローカル変数を表示させる機能パラメータ
DV / T / I / V / | / N | / Z
/ *****************************************
より詳細に、すべてのローカル変数の現在の機能を表示し、関数の引数
I =タイプ(ローカル、グローバル、パラメータ)
T =データタイプ
V =メモリレジスタまたはアドレスLOCATION
--------------- --------
ADDR =、名前= N-ソート、Z =ソートサイズによってソート
***************************************** /
コールスタック#
kは//現在のコールスタックを表示します
KN //スタックと数は、現在のコールスタックを表示します
キロバイト//現在のコールスタックの最初の3つの引数をプリントアウト
唯一の5キロバイト5 //ほとんどのコールスタック層を表示
.frameは//現在のスタックフレームを表示します
.frame N //スタックフレーム数N現在のスタックフレームに設けられ
.frame / RN //スタックフレーム数Nと現在のスタックフレーム表示レジスタ変数を設定します
!Uniqstackは//すべてのスレッドの呼び出しスタックを表示します
#登録
R //すべてのレジスタ情報を表示し
R EAX、EDX //表示EAX、EDX情報を登録します
R EAX = 5、EDX = 6 // EAX 5に割り当てられたレジスタ、EDX 6を割り当て
#メモリ
表示された5つの文字のASCII文字で始まる// 7c801e02メモリダ/ C 5 7c801e02
/ *****************************************
D [| U | B | W | W | D | C | Q | | F D] [/ C列] [住所]
= ASCII文字
U =ユニコード文字の
B =バイト+ ASCII
W =ワード(2B)
W =ワード(2B)+アスキー
D = DWORD(4B)
C = DWORD(4B)+ ASCII
Q = QWORD(8B)
フローティング= F点(単精度- 4B)
D =浮動小数点(倍精度- 8B)
***************************************** /
バイトと2値表示3で始まるDYB / C 3 7c801e02 // 7c801e02メモリ
/ *****************************************
DY [B | D] ... // B =バイナリ+バイトD =バイナリ+ DWORD
***************************************** /
#dump出力
.dump / MA「D:\ mydmpfile.dmp」//出力ファイルのデバッグ現在のプロセスをダンプ
#その他のメタコマンド
.tlist //すべてのプロセスを表示します
.cls //クリアスクリーン
その他の拡張コマンドの#
!現在の例外に関する-v //表示詳細情報を分析
!// PEB PEB出力フォーマット情報(プロセスの環境ブロック)
!GLE //印刷この最近のスレッド・エラー・メッセージ
!GLEの-allは//最後のエラーメッセージすべてのスレッドを印刷します
!エラー897 //表示エラーコード897の詳細情報に記載され
ヘルプ#
中国のオンラインヘルプ:http://www.dbgtech.net/windbghelp/index.html
CMDのWinDbg: http://www.slideshare.net/kewuc/windbg-cmds [ ダウンロード ]