IntelliTrace を使用したデバッグ

このトピックの内容は、Visual Studio 2010 Ultimate のみに該当します。

Microsoft Visual Studio 2010 Ultimate では、IntelliTrace を使用したデバッグを行うことができます。この方法でデバッグすると、従来のデバッガーを使用した場合よりも詳しくアプリケーションを調べることができます。 従来のデバッガーでは、アプリケーションの現在の状態と、過去に発生したイベントに関する限定的な情報だけが表示されます。 この場合、現時点のアプリケーションの状態に基づいて、過去に発生したイベントを推測するか、アプリケーションを再起動して過去のイベントを再現する必要があります。 IntelliTrace を使用すると、過去に発生したイベントをそのときの状態で実際に確認できます。 そのため、アプリケーションのデバッグに必要な再起動の回数が減り、アプリケーションを再起動したときにエラーが再現できないという現象も少なくなります。

IntelliTrace は、Visual Studio の従来のライブ デバッグ機能をさらに拡張して強化したデバッガーです。 Visual Studio の従来のデバッガー機能も、すべてこれまでどおりに使用できます。 IntelliTrace は、バックグラウンドでデバッグ情報の記録を実行します。実行内容は画面には表示されません。 アプリケーションの過去の状態を確認したい場合は、IntelliTrace モードに変更します。 このモードを使用すると、目的のイベントが記録されたさまざまな時点に移動できます。

IntelliTrace ファイルを読み込んでデバッグすることもできます。このファイルは IntelliTrace または テスト マネージャー によって作成され、.iTrace という拡張子が付きます。このファイルにより、IntelliTrace のすべての機能を使用してポスト クラッシュ デバッグを実行できます。

IntelliTrace の既定の設定を使用すると、アプリケーションのパフォーマンスに与える影響を最小限に抑えることができます。 そのため、IntelliTrace は既定で有効になっています。 デバッグ セッションの開始時に IntelliTrace を使用するつもりがなかった場合でも、IntelliTrace 情報は自動的に収集されるため、必要なときにこの情報を参照できます。

コード デバッグの高速化

IntelliTrace を使用してデバッグ サイクルを短縮することにより、デバッグにかかる時間を短くすることができます。 たとえば、レジストリ キーが存在しない状態で、レジストリ値を初期化処理中に読み込むアプリケーションをデバッグする場合を考えてみます。 この場合、アプリケーションの後半部分が実行されるまで問題に気付かないことがあります。 この問題に気付いてから、レジストリ値が読み込まれない理由を特定することになります。 一般的なデバッグの方法は、アプリケーションを再起動して、レジストリにアクセスするコード行の近くにブレークポイントを設定する方法です。 しかし、アプリケーションの実行には時間がかかります。 IntelliTrace を使用すると、多くの場合、アプリケーションを再起動せずにデバッグを実行できます。 アプリケーションを再起動する代わりに IntelliTrace を使用してデバッグを開始することにより、これまでにアクセスしたすべてのレジストリを確認し、その中から必要なレジストリを選択して、そのレジストリにアクセスした時点でのアプリケーションの状態を確認できます。 例外やファイルのアクセス エラーなどの問題をデバッグする場合も、同じようにデバッグにかかる時間を短縮できます。 詳細については、「IntelliTrace によるコードのデバッグの高速化」を参照してください。

再現できないエラーのデバッグ

IntelliTrace を使用すると、再現できないエラーやクラッシュをデバッグできます。 この場合、IntelliTrace または テスト マネージャー によって作成されたデバッグ ログ ファイルをデバッグします。 テスト担当者は、ログ ファイルを テスト マネージャー から Team Foundation Server の作業項目またはバグへ直接リンクして、開発担当者に割り当てることができます。 この方法により、IntelliTrace と テスト マネージャー がチームのワークフローに組み込まれます。

IntelliTrace ファイルをデバッグする手順は、ダンプ ファイルのデバッグ手順と似ています。 ただし、従来のダンプ ファイルと比較して、IntelliTrace ファイルには非常に多くの情報が記録されます。 ダンプ ファイルの場合、ある時点 (通常はクラッシュが発生した時点) におけるアプリケーション状態のスナップショットが記録されます。 IntelliTrace の場合は、履歴をさかのぼってアプリケーションの状態を確認し、アプリケーション実行の初期段階で発生したイベントの状態を確認できます。 このようにログ ファイルを使用することにより、ダンプ ファイルを使用するよりも短時間で簡単にデバッグできます。

詳細については、「IntelliTrace を使用した再現できないエラーのデバッグ」を参照してください。

サポートされているアプリケーションとデバッグのシナリオ

IntelliTrace は、.NET Version 2.0、3.0、3.5、または 4 を使用する Visual Basic アプリケーションおよび Visual C# アプリケーションのデバッグをサポートしています。 ASP.NET、Windows フォーム、WPF、Windows Workflow、WCF を使用して作成されたアプリケーションなど、さまざまなアプリケーションをデバッグできます。 C++ やスクリプトなどの言語でのデバッグは、IntelliTrace ではサポートされていません。 F# アプリケーションのデバッグについては、試用という前提でサポートされています。

IntelliTrace を使用すると、IntelliTrace または テスト マネージャー によって作成された Visual Studio ファイルや IntelliTrace ファイルからデバッグ アプリケーションを起動できます。 Visual Studio の外部から起動され、[アタッチ先] コマンドを使用してデバッグされたアプリケーションの場合、IntelliTrace は使用できません。 IntelliTrace は、別のコンピューターで実行されているアプリケーションのリモート デバッグはサポートしていません。

IntelliTrace は、テスト マネージャー によって作成されたトレース デバッグ ログ ファイルによる SharePoint アプリケーションと 64 ビット アプリケーションのポスト クラッシュ デバッグをサポートしています。 ただし、Visual Studio から起動された SharePoint アプリケーションと 64 ビット アプリケーションのデバッグはサポートしていません。

IntelliTrace は、Silverlight アプリケーション、Xbox アプリケーション、Windows Mobile アプリケーションのデバッグはサポートしていません。

収集レベル

IntelliTrace を有効にすると、デバッグ セッションを実行するたびにデバッグ情報が自動的に収集されます。 収集された IntelliTrace 情報を使用すると、必要に応じてライブ デバッグから IntelliTrace によるデバッグへ切り替えることができます。 収集された情報の種類は、Visual Studio レベルで設定したオプションによって指定されます。 この収集オプションは、すべてのプロジェクトとソリューションに適用されます。 また、デバッグ セッションや Visual Studio セッションが変わっても維持されます。

既定では、選択された IntelliTrace イベントについてのみ、情報が収集されされます。 上で説明したように、この既定の設定で情報を収集すると、アプリケーションのパフォーマンスに与える影響を最小限に抑えることができます。

IntelliTrace イベントに加えて呼び出しレコード (パラメーターと戻り値を含む) の収集を選択すると、さらに詳細なデバッグ情報を収集できます。 ただし、こうした追加情報を収集すると、パフォーマンスに影響が出ます。 診断イベントと収集オプションの詳細については、「IntelliTrace 情報の収集」を参照してください。

参照

概念

一般的な開発タスクの実行

その他の技術情報

IntelliTrace 機能拡張の API リファレンス