Windbg」タグアーカイブ

windbg と gdb に関係した基本操作メモ。

毎回調べている気がするのでメモ。
(たぶんころころ書き加えていきます

 

作業内容 windbg gdb
実行 g r
ブレークポイント bp b
ブレークポイント
一覧
bl i b
(info breakpoint)
ブレークポイント
削除
bc d
ステップ実行
(Step over)
p n
ステップ実行
(Step Into)
t s
メモリ内容表示 d
d(a,b,c,d…)
d
x/(o,x,u,t,8xb..)
変数内容表示 dv (変数名) print (変数名)

p *0x000  みたいなのも可

レジスタの値 (レジスタウィンドウを見る)

dd eax..

i r

i r eax..

逆アセンブル結果 (Disassemble ウィンドウをみる) disas (関数名)
ソースコード (ウィンドウを見る) list (関数名)

 

・・とりあえず、良く忘れるので(

 

あといくつかメモ:

 

gcc でビルド時にデバッグ情報を入れる:
→ gcc –g でビルドしてやる

objdump で Intel 記法で眺められるようにする:
→ objdump –M intel  で眺める。
ex)  objdump –M intel –D a.out   .. のように。

VC コンパイラでデバッグ情報を入れる:
→ cl /Zi でビルドする。

VC コンパイラ環境で objdump っぽいことをする:
→ dumpbin a.exe /disasm  とかやると良い感じ。

IDA Pro で Windbg 絡みの “Could not initialize WinDbg ..” というエラーが出てくる場合の対処

image

—————————

Could not initialize WinDbg engine <> with error:
指定されたプロシージャが見つかりません。 (0000007F).
Please make sure you have the latest Debugging Tools from Microsoft.

—————————

このダイアログですね。

 

たぶんまた数分このダイアログの対処で数分フリーズしてしまう気がしたので、
メモ。

 


対処法:

IDA のインストールディレクトリの中の cfg ディレクトリ内にある ida.cfg をいじる

ida.cfg 内に DBGTOOLS という変数が定義されていて、
それに x86 版の dbgeng.dll (windbg.exe がおいてあるディレクトリと同じところに大体ある) のあるディレクトリパスを指定すると動き出します。

具体的には、 Windows 8 向けの SDK なら

DBGTOOLS = "C:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x86";

こんなパスを指定してやると動作します。