SlideShare a Scribd company logo
Visual Studio 2012
Native Debugging
      かめがわ かずし
2012/8/4時点のVisual Studio 2012 RCを
      使用して検証しています。
  製品版では異なる場合があります。
先日超久しぶりにVisual Studio 2010で
   STL使ってみたんですよ
ソースそのものにはあまり意味がなく、ローカル変数ウィンドウに注目
あれ?VS2010では
コンテナの中身が表示
  されている?
Visual Studio .NET 2003では
確かそんな機能なかった!
    STLのメンバ変数にはアドレスしかなく、
        メモリウィンドウから探した
XP SP3
VC++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
Demo
Natvisファイル使ってみよう!
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が含まれているので、ヘッドレスサーバーでも
  動く
Windows
Server 2008 R2 SP1
Core i3-2100T



Windows 7 SP1
nVidia GTX 550i




Windows 8 RP
nVidia GeForce 610




Windows
Server 2012 RC
Core 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
Demo
GPU状態表示
参考資料
• 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)
ありがとうございました!

More Related Content

PPTX
JetsonでOpenCV
PPTX
Andoird版OpenCVのJavaサンプルを動かす
PDF
ALMツールたべくらべ
PDF
OpenCV4Androidで画像処理アプリのススメ
KEY
初めての単体テスト
PPTX
Modern .NET
PDF
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
PDF
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい
JetsonでOpenCV
Andoird版OpenCVのJavaサンプルを動かす
ALMツールたべくらべ
OpenCV4Androidで画像処理アプリのススメ
初めての単体テスト
Modern .NET
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい

What's hot (19)

PDF
Visual studio 2013 debugging
PDF
続Open cv4android
PPTX
継続的インテグレーション3分クッキング
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
PDF
ハイパフォーマンスSeleniumテスト@サイボウズ
PPTX
今から始める、Windows 10&新.NETへの移行戦略
PPT
ビジネス的に高価値なアジャイルテスト
PPTX
C# design note sep 2014
KEY
Cq tse-fm3セミナー資料
PDF
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
KEY
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
PDF
【第45回コンピュータビジョン勉強会@関東】NVIDIA VisionWorks Tips紹介
PDF
Howto CAD and Meshing on DEXCS2021
PPTX
Aspnet mvc 6の今を紹介
PDF
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
PDF
phpspecで始めるBDD
PDF
123 Dexcs2021
PPTX
Net fringejp2016
PPTX
Net なプロジェクトでも jenkins を使ってみた
Visual studio 2013 debugging
続Open cv4android
継続的インテグレーション3分クッキング
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
ハイパフォーマンスSeleniumテスト@サイボウズ
今から始める、Windows 10&新.NETへの移行戦略
ビジネス的に高価値なアジャイルテスト
C# design note sep 2014
Cq tse-fm3セミナー資料
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
【第45回コンピュータビジョン勉強会@関東】NVIDIA VisionWorks Tips紹介
Howto CAD and Meshing on DEXCS2021
Aspnet mvc 6の今を紹介
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
phpspecで始めるBDD
123 Dexcs2021
Net fringejp2016
Net なプロジェクトでも jenkins を使ってみた
Ad

Similar to Visual Studio 2012 Native Debugger Feature (12)

PPTX
C++ AMPを使ってみよう
PDF
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
PDF
1072: アプリケーション開発を加速するCUDAライブラリ
PDF
[2001/01/23] VSLive! / Visual C++.NET 新機能概要
PDF
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
PPTX
20171206 Sony Neural Network Console 活用テクニック
KEY
関東GPGPU勉強会 LLVM meets GPU
PDF
C++ in Embedded Systems
PDF
Xbyakの紹介とその周辺
PPTX
ネイティブコードを語る
PPTX
OpenCVを用いた画像処理入門
PPTX
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろう
C++ AMPを使ってみよう
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
1072: アプリケーション開発を加速するCUDAライブラリ
[2001/01/23] VSLive! / Visual C++.NET 新機能概要
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
20171206 Sony Neural Network Console 活用テクニック
関東GPGPU勉強会 LLVM meets GPU
C++ in Embedded Systems
Xbyakの紹介とその周辺
ネイティブコードを語る
OpenCVを用いた画像処理入門
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろう
Ad

More from Kazushi Kamegawa (20)

PDF
「何もしないのにCIが失敗した」を防ぐ
PDF
Ignite 2021秋 recap - 開発者向け新機能紹介
PDF
Azure boards for beginners
PDF
Deploy Strategy with Azure Pipelines
PDF
DevOps and compliance and security
PDF
DevOps and Compliance and Security
PDF
Ignite 2021 振り返り(DevOps)
PDF
How to create your own Azure Pipeline's image
PDF
NET5 and Diagnostics
PDF
Azure DevOps入門~TechLab編
PDF
Introduce TFSUG and Azure DevOps Server 2020
PDF
Azure DevOps Online Vol.3 - Inside Azure Pipelines
PDF
Getting Start for Azure Pipelines
PDF
Azure Boards and Azure Test Plans inside out.
PDF
Azure DevOps's security
PDF
Azure DevOps Management in Organization
PPTX
What's new Azure DevOps in //Build 2019
PPTX
Deploy to Azure by ??? Azure Repos or GitHub
PDF
Azure DevOpsとセキュリティ
PPTX
What's Azure DevOps
「何もしないのにCIが失敗した」を防ぐ
Ignite 2021秋 recap - 開発者向け新機能紹介
Azure boards for beginners
Deploy Strategy with Azure Pipelines
DevOps and compliance and security
DevOps and Compliance and Security
Ignite 2021 振り返り(DevOps)
How to create your own Azure Pipeline's image
NET5 and Diagnostics
Azure DevOps入門~TechLab編
Introduce TFSUG and Azure DevOps Server 2020
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Getting Start for Azure Pipelines
Azure Boards and Azure Test Plans inside out.
Azure DevOps's security
Azure DevOps Management in Organization
What's new Azure DevOps in //Build 2019
Deploy to Azure by ??? Azure Repos or GitHub
Azure DevOpsとセキュリティ
What's Azure DevOps

Visual Studio 2012 Native Debugger Feature