troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

.ocommand: アプリケーションからWinDbgにデバッガーコマンドを実行させる


.ocommand とは
.ocommand は、WinDbg のコマンドで「.ocommand <文字列>」 という形で使用します。
すると、プログラムで 「OutputDebugString(_T(“<文字列> <デバッガーコマンド>"))」が実行されると、<デバッガーコマンド> がWinDbg で実行されるようになります。

言葉だけではわかりにくいので、例を用いて.ocommand の使用方法を紹介します。

.ocommmand の使用例
1. 以下の単純なC++ のサンプルコードをビルドしたexe を利用します。
注目するところは、「OutputDebugString(_T("TESTCOMMAND kb;g"));」です。(意味の詳細については後述します。)

void MyFunc() {
OutputDebugString(_T("TESTCOMMAND kb;g"));//注目する所
}

int _tmain(int argc, _TCHAR* argv[])
{
MyFunc();
return 0;
}

2. WinDbg を起動し、「File」→ 「Open Executable」 から、上記1で作成したexe を実行します。


3. イニシャルブレイクポイント(すなわち_tmain() が実行される前のブレークポイント)にヒットするので「.ocommand TESTCOMMAND」を実行します。

こうすることにより、「OutputDebugString(_T("TESTCOMMAND <コマンド>"));」が実行される時に、<コマンド>が実行されるようになります。
今回のサンプルプログラムの「OutputDebugString(_T("TESTCOMMAND kb;g"));」でいうと、「kb;g」が実行されることとなります。

4. 「g」を実行し、プログラムを実行させMyFunc() を実行させます。


5. MyFunc()中の「OutputDebugString(_T("TESTCOMMAND kb;g"));」が実行されるため、「kb;g」の結果がWinDbg に表示されます。


情報元
.ocommand (Expect Commands from Target) (英語)

関連記事
wt : WinDbg のライブデバッグ時のトレースに使えるコマンド


  1. 2015/02/08(日) 22:21:21|
  2. WinDbg
  3. | トラックバック:0
  4. | コメント:0
<<Message Analyzer 1.2 の新機能Grouping Viewer - 通信をグループ化して表示 | ホーム | WinAPIOverride:API コールの引数・戻り値の確認や、API の上書きが可能なオープンソースのツール (2)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/223-15c665f0
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。