• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Visual Studio 2012 Native Debugger Feature
 

Visual Studio 2012 Native Debugger Feature

on

  • 2,372 views

Visual Studio 2012 RC New Feature for Native Debugger.C++ AMP,debugger visualizer.

Visual Studio 2012 RC New Feature for Native Debugger.C++ AMP,debugger visualizer.

Statistics

Views

Total Views
2,372
Views on SlideShare
1,512
Embed Views
860

Actions

Likes
3
Downloads
1
Comments
0

6 Embeds 860

http://d.hatena.ne.jp 783
http://kkamegawa.hatenablog.jp 37
http://cloud.feedly.com 30
https://twitter.com 8
http://s.deeeki.com 1
http://feedly.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Visual Studio 2012 Native Debugger Feature Visual Studio 2012 Native Debugger Feature Presentation Transcript

    • Visual Studio 2012Native Debugging かめがわ かずし
    • 2012/8/4時点のVisual Studio 2012 RCを 使用して検証しています。 製品版では異なる場合があります。
    • 先日超久しぶりにVisual Studio 2010で STL使ってみたんですよ
    • ソースそのものにはあまり意味がなく、ローカル変数ウィンドウに注目
    • あれ?VS2010ではコンテナの中身が表示 されている?
    • Visual Studio .NET 2003では確かそんな機能なかった! STLのメンバ変数にはアドレスしかなく、 メモリウィンドウから探した
    • XP SP3VC++2003を Hyper-Vにインストールパッチ160個かかった時間プライスレス
    • でもVisual Studio 2012(RC)は そんなものじゃなかった!
    • 自己紹介• かめがわ かずし id:kkamegawa/@kkamegawa(twitter)/kkamegawa(FB)• Microsoft MVP for Visual Studio ALM(2012/7~2013/6)• @ITさんの連載 o いまさら聞けないWindows Serverの開発活用術 – 現在進行中 o Visual Studioデバッグ手法 o パフォーマンスチューニング 今日はこれ
    • 今日やること• Visual Studio 2012 Debuggerビジュアライズ機能の紹介• GPUデバッグとC++AMP
    • Visual Studio 2012 Debugger 新機能 コンパイラ/IDEも頑張った。 デバッガも頑張ってる。
    • コンテナの中身を わかりやすく表示• Visual Studio .NET 2003で はSTLコンテナの中身は表 示されなかった(メンバ変数 のアドレスのみ表示)• Visual Studio 2010ではSTL のメンバ変数を展開する
    • Visual Studio 2012は どっちもいける 通常はコンテナの中身が見えれば十分「未加工ビュー」はメンバ変数をそのまま表示
    • Visual Studio 2012ではこのメンバ変数表示機能が 強力に!
    • Natvisファイルを使った デバッガビジュアライズ• 拡張子Natvisファイル(中身はxml)を指定のフォルダに置けばネイ ティブの型情報を展開してくれる。• 解析優先順位は以下の通り o %VSINSTALLDIR%¥Common7¥Packages¥Debugger¥Visualizers (昇格必須) o %USERPROFILE%¥Documents¥Visual Studio 2012¥Visualizers o VS extension folders• 最優先のcommon7フォルダ配下にはデフォルトのファイルがある (Windows/MFC/ATL/Concurrency/STL/WinRT)。• ファイルの解析結果を表示させるにはレジストリにDWORDの EnableNatvisDiagnosticsを作り、1を指定すると出力ウィンドウに表 示される HKEY_CURRENT_USER¥Software¥Microsoft¥VisualStudio¥11.0_ Config¥Debugger
    • DemoNatvisファイル使ってみよう!
    • Natvisファイルの例構造体(MyRectangle)MyRectangle.Natvis STLのコンテナのような構造ではメンバ変数の展開も 考慮する必要があります。
    • 実行結果通常のローカルウィンドウMyRectangle.Natvisを適用した場合
    • Natvisファイル解析例失敗例成功例 Natvisファイルの解析には少し時間がかかるので、 デバッグ開始から少し待つ
    • Natvisファイルまとめ• デバッガ内でメンバ変数がビジュアライズされてうれしい。• natvisファイルの解析完了メッセージがちょっと遅く表示されるけど 気にしない(RC版)• UTF-8のXMLなので、日本語もOK• Natvisファイルを書き換えたとき、削除したときVisual Studioが読 み直させるにはたぶん再起動必要。• サンプルページのソリューション開けなかった… http://code.msdn.microsoft.com/Writing-type-visualizers- 2eae77a2
    • GPUデバッグ
    • Visual Studio 2012の GPU活用機能• C++ AMP(GPUを使った高速処理)のデバッグ支援• DirectXシェーダーのデバッグ• GPUの並列状態の可視化(TPL/PPLと同様) http://msdn.microsoft.com/ja- jp/library/01xdt7cs(v=vs.110).aspx
    • C++ AMPってなに?• Visual Studio 2012 C++ネイティブコードの新機能• GPUにGPUで行った方が早い処理を肩代わりさせる• Visual Studio 2012 C++コンパイラー組み込みでGPUの違い を意識する必要がない• 対応GPUが必要 プロセッサーグラフィックスでは使えないものがある
    • DemoどのくらいGPUが早い場合があるか
    • C++ AMP対応GPU• ディスクリードGPU(nVidiaやAMDの単体GPU)はOK• 第二世代(Sandy Bridge)Intel Core iプロセッサはNG (Core i3-2100T/Windows Server 2008 R2)• 第三世代(Ivy Bridge)Intel Core iプロセッサはOK (Core i5-3450T/Windows Server 2012 RC)• Vmware PlayerはNG• 現時点ではデバッガ実行すると、GPUエミュレーターになるので、 超遅くなることがある
    • C++ AMPチェック方法• PPL Teamのblogからverifyampdevices.exeをダウンロードし て実行(特権昇格不要) http://blogs.msdn.com/b/nativeconcurrency/archive/2011/ 09/22/can-i-run-c-amp-on-my-device.aspx• Windows 8やWindows Server 2012ではMicrosoft Basic Render Driverが含まれているので、ヘッドレスサーバーでも 動く
    • WindowsServer 2008 R2 SP1Core i3-2100TWindows 7 SP1nVidia GTX 550iWindows 8 RPnVidia GeForce 610WindowsServer 2012 RCCore i5-3450T
    • サーバーでは?• サーバーでC++ AMPで使えるGPUが使えるかどうかはわか らない(前述の方法で判定しておくなんて面倒)• CI(自動ビルド/自動テスト)するとき動かない?• そもそもローカルにC++ AMPで対象となるGPUが使えないん だけど?
    • C++AMP動作まとめ• Windows Server でも動く。Windows Server 2008 R2はGPU 次第• Windows Server 2012では特にMicrosoft Basic Render DriverのおかげでGPUがないものでも動く(CI時に使える)• Windows 7/Windows Server 2008 R2ではSession 0(サービ ス用セッション)では動くとは言わないけど、大体動く(DirectX がSession 0固有の仕様を踏んでしまうようなものはダメ)
    • C++ AMPデバッグ• 通常のデバッグと同じ感覚• GPUでも競合が発生する。Visual Studio 2012では例外を検 出する
    • GPUメモリアクセス 例外検出
    • 対応GPUがローカルに ない場合• リモートデバッガを使いましょう(以上終わり)• リモートデバッガはVisual Studioのバージョン合わせないと 動きません リモートデバッガはダウンロードセンターから入手可• マネージドコードでは認証アカウントに注意 (アンマネージドコードでは無効にすることもできる)• UIはちょっと違うけど、@ITで以前書いた記事もみてね http://www.atmarkit.co.jp/fdotnet/chushin/vsdebug_03/vsd ebug_03_02.html
    • DemoGPU状態表示
    • 参考資料• PPL(Parallel Programming Library) TeamのBlog http://blogs.msdn.com/b/nativeconcurrency/• MSDN Library Debugging in Visual Studio 2012 http://msdn.microsoft.com/ja-jp/library/sc65sadd(v=vs.110)
    • ありがとうございました!