Visual Studio 2010は、プロファイル作成およびデバッギング並列アプリケーションへ新しくフォーカスするとしている。対処しようとしている問題の1つは、設計時の ソースコードと実行時のコード間のブラックボックスである。設計時、コードはPLINQまたはParallel.Forを使用し、宣言的に提示されるが、 実行時には、個別のスレッドの観点で提示される。デバッガに関する限り、これら2つのレイヤー間で起こっていることは非常に謎めいている。これに対処する ために、Microsoftはデバッガのフォーカスを抽象のより上位、すなわちタスクレベルに移行したいと考えている。
これがどう機能するのかを理解するには、PLINQおよびParallel.ForがTask Parallel Libraryでビルドされることを理解することが重要である。極めて単純化されているが、並列操作を一連のタスクとして考えることができる。順々に一連 のスレッド上で実行される。
こんにちのVSにおけるタスクで何が起こっているのかを知るためには、デベロッパは各スレッドを個別に確認する必要がある。VS 2010では、新たなウィンドウはタスクを直接表示する。各タスクは、コールスタックを持つボックスとして表示され、引数が渡される。共通のコールスタッ クを共有している複数のタスクは、同じボックスにリストされる。タスクに共通のベースがあるが、コールスタックにさらに分岐する場合、個別の子ボックスを 持った共通ボックスとして表示される。
スタックの代わりに、メソッドビューを表示することもできる。これは、どう呼び出されようと、選択されたメソッドによって呼び出されたり、呼び出す各メソッドの親および子ボックスをもった特定のメソッドにフォーカスする。
個別のビューが、作成した子タスクとタスクがどのように関連するのかを示す。デフォルトでは、これはタスクが開始されたかどうか、また何に仕えているのかというような情報を備えた階層的なグリッドである。グループ化および任意の列によるソートが可能である。
プロファイル作成の面では、新たに3つのツールが提供されている。1つ目は、プレコアの割合でのCPU使用率を表示するトレースである。毎回、スタック バーがアプリケーション、アイドルまたは、その他のシステム処理で使用されたコア数を表示する。これによりデベロッパは、アプリケーションが提供されたリ ソースをすべて消費しているかどうかを迅速に確認することができる。
次のツールは、各スレッドのタイムラインを表示する。特定の時点で、スレッドのコールスタックおよび遅延時間が利用可能である。コードの実行、ロック待機 またはIOなどのタイプにより遅延はグループ化される。Parallel.Forのような構文を使用する場合、マーカーはいつ並列ループが開始および終了 したかを示す。
そして最後のツールは、スレッドがコアにマップされる様子を示す。タイムラインの方式で表示されるので、色分けされたコードスレッドがコアからコアにマイ グレーションしているかどうか、また頻繁にコンテキストが切り替えられているかどうかを迅速に確認することができる。毎回、スレッドが別のコアにジャンプ するので、CPUの高速キャッシュが無効になる良い機会である。そのため、これは重要である。
Steve Teixeira氏、Daniel Moth氏およびSean Nordberg氏がこうした機能をChannel 9ビデオ(リンク)で紹介している。
原文はこちらです:http://www.infoq.com/news/2008/10/VS10-Parallel-Debugging