troushoo

スポンサーサイト

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

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

.cmdtree : WinDbg利用の際に、任意のデバッグコマンドをGUIから実行

WinDbgを利用したデバッグの際に、.cmdtreeを利用すると任意のコマンドをGUIから実行することができるようになります。コマンドを覚えなくてもよくなり、大変便利です。
以下、cmdtreeの利用方法を紹介します。

準備
1. notepad.exeを開き、コマンドを含んだテキストファイルを作成します。
テキストファイルのフォーマットとして、MSDNブログのDebugging Toolboxで紹介されていたテンプレートを以下に記述します。
フォーマットのルールは難しくなく、後述する結果を見ればすぐにわかります。

windbg ANSI Command Tree 1.0
title {"Common Commands"}
body
{"Common Commands"}
 {"Information"}
  {"Time of dump"} {".time"}
  {"Process being debugged"} {"|"}
  {"Dump Location"} {"||"}
  {"Create server on port 9999"} {".server tcp:port=9999"}
  {"Show remote connections"} {".clients"}
  {"Process Environment Block"} {"!peb"}
 {"Logging"}
  {"Open Log"} {".logopen /t /u /d"}
  {"Close Log"} {".logclose"}
 {"Modules"}
  {"All Modules"} {"lm D sm"}
  {"Loaded Modules"} {"lmo D sm"}
  {"Loaded Modules (verbose)"} {"lmvo D sm"}
  {"Modules w/o symbols"} {"lme D sm"}
 {"Stacks"}
  {"Set frame length to 2000"} {".kframes 2000"}
  {"Dump current stack w/ DML"} {"kpM 1000"}
  {"Dump stacks without private info"} {"knL 1000"}
  {"Dump stacks with all parameters"} {"kPn 1000"}
  {"Dump stacks (distance from last frame)"} {"kf 1000"}
  {"Dump stacks with Frame Pointer Omission"} {"kvn 1000"}
  {"Dump all stack"} {"~*kbn 1000"}
  {"Dump unique stacks"} {"!uniqstack -pn"}
  {"Thread environment block"} {"!teb"}
  {"Move to next frame"} {".f+"}
  {"Move to previous frame"} {".f-"}
 {"Memory"}
  {"Dump heaps"} {"!heap -a"}
 {"Automated Task"}
  {"!analyze"} {"!analyze -v"}
  {"Locks"} {"!ntsdexts.locks"}
  {"CPU time for User and Kernel Mode"} {"!runaway 7"}
 {"Managed"}
  {"Load sos"} {".loadby sos mscorwks"}
  {"clrstack"} {"!clrstack"}
  {"Threads"} {"!threads"}
  {"Stack Objects"} {"!dso"}
  {"Exceptions"} {"!dae"}
.cmdtreeで使用するテキストファイル
2. 1で作成したファイルを、任意の名前で保存します。
本例では、C:\MyFiles\cmdtree.txt に保存しました。

.cmdtree使用方法
1. WinDbgを開いて、.cmdtreeを実行します。
具体的なコマンドは以下です。
  .cmdtree <準備で作成したファイルへのパス>
.cmdtreeコマンドの実行
2. 新しいウィンドウが表示されます。
新しいウィンドウが表示される
3. “+”をクリックし、文字列をダブルクリックすると外套のコマンドが実行されます。
以下は、”Time of dump”をダブルクリックしたところです。該当するコマンド(=作成したテキストファイルの、同じ行にあるコマンド)”.time”が実行されていることがわかります。
コマンドをGUIから実行
 
補足
・.cmdtreeはヘルプファイルには載っていない、いわゆる隠しコマンドです。

リンク
・Special Command—Execute Commands from a Customized User Interface with .cmdtree
http://blogs.msdn.com/b/debuggingtoolbox/archive/2008/09/17/special-command-execute-commands-from-a-customized-user-interface-with-cmdtree.aspx
 
 

  1. 2012/09/11(火) 14:47:03|
  2. WinDbg
  3. | トラックバック:0
  4. | コメント:0
<<.NET Frameworkのソースコード/ソースデバッグ | ホーム | PsExecを使用した3つの上級テクニック>>

コメント

コメントの投稿


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

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/77-fdfbe470
この記事にトラックバックする(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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。