ラベル Debug の投稿を表示しています。 すべての投稿を表示
ラベル Debug の投稿を表示しています。 すべての投稿を表示

2008年7月10日木曜日

WinDbgでハンドルリークのデバッグ

WinDbgを使ってハンドル(カーネルオブジェクト)のリークをデバッグする方法

1. !htrace -enable
2. !handle コマンドでリーク前のハンドル使用状況を出力し、テキストに保存
3. アプリケーションを動かしてリークさせる
4. !handle コマンドでリーク後のハンドル使用状況を出力し、テキストに保存
5. diff BeforeLeak.txt AfterLeak.txt | grep '> Handle' > LeakHandles.txt
6. LeakHandles.txt をエディタで開いて、"> Handle "を"0x"に置換してリークしたと疑われるハンドルIDのリスト完成
7. .foreach /f (hid "C:\LeakHandles.txt") { !htrace hid 1 }

これで、リークしたと疑われるハンドルを最後に操作したコードのスタックトレースが表示されます。

WinDbgすごい!

2004年7月13日火曜日

VisualCでのデバッグTips

VisualCは何年か使ってますが、全然しりませんでした。
あまりの衝撃にこっちにもメモw

クイックウォッチでエラーコードとその内容を表示する

内容がないのもなんなので、追記。
例外が発生した箇所でBreakしたい場合は、「デバッグ」メニューの「例外」で設定することができます。(Visual C++ .NET 2003)
指定した例外以外にも色々な特殊な状況でBreakしたりしなかったりが設定できます。

  © Blogger template 'Isolation' by Ourblogtemplates.com 2008

Back to TOP