troushoo

Visual Studio 2012とWinDbgの統合

Visual Studio 2012より、Visual StudioとWinDbgが統合し、Visual StudioでWinDbgのエンジンを用いたデバッグができるようになります。
以下、環境構築の仕方、デバッグ方法を説明します。

環境構築
1. Visual Studio 2012 Ultimateをインストールします。
  2012/07/10現在、以下のサイトよりRC版を無料でダウンロードできます。
  http://www.microsoft.com/visualstudio/11/ja-jp
2. Windows Driver Kit (WDK) 8 Release Previewをインストールします。
  2012/07/10現在、以下のサイトより無料でダウンロードできます。
  http://msdn.microsoft.com/ja-jp/library/windows/hardware/hh852362
  *最後にWDF (Windows Driver Frameworks) をインストールするかを聞かれますが、インストールする必要はありません。

デバッグ開始方法
1. 新しくプロセスを起動しデバッグ
  1.1.  Visual Studioを起動し、ツール → Launch Under Debugger をクリックします。
      
  1.2.  "Path to Executable"、"Arguments"、"Working Directory"を必要に応じて記述し、"Launch"をクリックします。
      
  1.3.  WinDbgでプロセスを起動した時と同じ結果が、Debugger Immediate Windowに表示されます。
      

2. 起動しているプロセスにアタッチしてデバック
  2.1.  Visual Studioを起動し、ツール → プロセスにアタッチ(デバッグ → プロセスにアタッチ でも構いません)をクリックします。
      
  2.2.  "トランスポート"に"Windows User Mode Debugger"を、"修飾子"に"Localhost"を選択し、"選択可能なプロセス"からデバッグしたいプロセスを選択し、"アタッチ"をクリックします。
      
  2.3.  WinDbgでプロセスにアタッチした時と同じ結果が、Debugger Immediate Windowに表示されます。
      

基本的なデバッグ方法
・Debugger Immediate Windowsの一番下にデバッグコマンドを打ち込みます。
 以下はvertargetコマンドを入力しているところです。
 
・WinDbgでは有効でないIntelliTraceが有効になっています。
 以下は「!」を打ち込んだ直後の画面です。!で始まるコマンドが標示されます。
 
・コマンドを打ち込んでF1を押すと、そのコマンドのヘルプが表示されます。
 たとえば「!analyze」と打ち込んで、F1を押すと!analyzeのヘルプが表示さます。
 
 

ティップス
ネイティブアプリはVisual Studioで通常使用しているVisual StudioのデバッガーをWinDbgに変更することも可能です。
 a. プロジェクトを右クリックし"プロパティ"を選択します。
   
 b. "デバッグ"をクリックし、起動するデバッガーを"Debugging Tools for Windows -Local Debugger"にします。
   
 c. F5でデバッグを開始すると、上記で記述したようにDebugger Immediate Windowsにコマンドを入力できるようになります。
   
補足)
・.NET アプリのデバッグでは、下記の図のように、同様のUIの場所でデバッガーを設定できる場所がありませんでした。
 
・64bitのsos.dllも読み込むことが可能です。
 Visual Studioのデバッガを使っている際に、イミディエイト ウィンドウで.load sosとすることでsos.dllを読み込むことも可能ですが、32bitのsos.dllしか読み込めません。
 以下は32bitのsos.dllを読み込んでいるところです。
 
 64bitのsos.dllを読み込もうとすると、"sos.dll を読み込めませんでした (エラー 193)"とエラーが出て読み込めません。
 
 しかし今回紹介した方法を用いると、!chainの結果からもわかるように64bitのsosも読み込むことができます。
 

リンク
Debugging a User-Mode Process Using Visual Studio
 http://msdn.microsoft.com/en-us/library/windows/hardware/hh406273(v=vs.85).aspx
・Visual Studio 2012 and WinDbg Integration
 http://blogs.msdn.com/b/mariohewardt/archive/2012/06/05/visual-studio-2012-and-windbg-integration.aspx


  1. 2012/07/10(火) 15:54:34|
  2. Visual Studio
  3. | トラックバック:0
  4. | コメント:0
<<Windows Azureのコンピュートエミュレーターに表示されるトレースを、Windows Azure OS上でも簡単に確認する方法 | ホーム | Process Explorerで.NETアプリのスタックを確認>>

コメント

コメントの投稿


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

トラックバック

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

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

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

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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