IntelliTrace を使用したコード実行の記録によるアプリのデバッグ

IntelliTrace を使用して実行履歴を記録およびトレースするときに、Visual Studio Ultimate でのアプリのデバッグ時間が短縮されます。 IntelliTrace の次の機能により、多くのブレークポイントを設定せずにバグをより簡単に発見できます。

  • アプリで発生した特定のイベントを記録する。

    関連するコード、デバッガー イベント中に [ローカル] ウィンドウに表示されるデータ、および関数呼び出し情報 (収集する場合) を確認できます。

  • バグまたはイベントを再作成するためのアプリの再起動を減らす。

  • 再現が困難な場合、または配置で発生する場合のエラーをデバッグします。

次は、イベントの記録がいかにコードのバグの発見に役立つかを示しています。

IntelliTrace イベントのみ - 高レベルのフロー

実行する操作

Visual Studio の IntelliTrace を使用してアプリをデバッグする:

  • 過去のイベントを表示する。

  • 過去のイベントの呼び出し情報を表示する。

  • IntelliTrace セッションを保存する。

  • IntelliTrace により収集されたデータを制御する。

テスト マネージャーのテスト セッション中に IntelliTrace データを収集する

配置されたアプリから IntelliTrace データを収集する

IntelliTrace ログ ファイル (.iTrace ファイル) からデバッグを開始する。

FAQ

  • IntelliTrace を使用してデバッグできるアプリ

  • IntelliTrace を使用してデバッグする理由

  • IntelliTrace が収集するデータ

  • IntelliTrace はアプリの速度を低下するか

IntelliTrace を使用してデバッグできるアプリ

サポート状況

限定されたサポート

  • 試用前提の F# アプリ

  • Windows ストア アプリは、イベントのみにサポート

サポートなし

  • C++、その他の言語、スクリプト

  • Windows サービス、Silverlight、Xbox、Windows Mobile のアプリ

注意

既に実行されているプロセスをデバッグする場合は、IntelliTrace を使用できません。プロセスの開始時に IntelliTrace を起動する必要があります。

IntelliTrace を使用してデバッグする理由

従来のデバッグまたはライブ デバッグでは、アプリの現在の状態と過去のイベントの制限されたデータのみが表示されます。 アプリの現在の状態に基づいてこれらのイベントを推測するか、またはアプリを再実行することによってこれらのイベントを再作成する必要があります。

IntelliTrace は、これらの時点で特定のイベントやデータを記録することによってこの従来のデバッグを拡大します。 これにより、特にバグの箇所を通り越してステップ実行した場合に、再起動せずにこれらのアプリで起こったことを確認できます。 IntelliTrace は従来のデバッグ中に既定で有効になっているため、自動的に非表示の状態でデータを収集します。 これにより、従来のデバッグと IntelliTrace デバッグを簡単に切り替えて、記録された情報を見ることができます。 「IntelliTrace によるデバック中のコード実行の記録」および「IntelliTrace が収集するデータ」を参照してください。

また、IntelliTrace は再現が困難なエラーや配置で発生するエラーのデバッグに役立ちます。 IntelliTrace データを収集し、IntelliTrace ログ ファイル (.iTrace ファイル) に保存できます。 .iTrace ファイルには、例外、パフォーマンス イベント、Web 要求、テスト データ、スレッド、モジュール、およびその他のシステム情報に関する詳細情報が含まれています。 Visual Studio Ultimate でこのファイルを開き、項目を選択し、IntelliTrace でデバッグを開始できます。 これにより、ファイル内の任意のイベントに移動して、その時点のアプリに関する特定の詳細を表示できます。

次のソースからの IntelliTrace データを保存できます。

IntelliTrace を使用したデバッグがどのように役立つかの例を次に示します。

  • アプリのデータ ファイルが破損していますが、このイベントの発生場所を特定できません。

    IntelliTrace がなければ、コード全体を確認して可能性のあるファイルのアクセスをすべて見つけ、それらのアクセスにブレークポイントを設定してから、アプリを再実行して、問題の発生個所を探さなければなりません。 IntelliTrace を使用すると、各イベントが発生したときに収集されたアプリに関するファイル アクセス イベントや特定の詳細をすべて表示できます。

  • 例外が発生します。

    IntelliTrace がない場合、例外に関するメッセージが表示されますが、例外の原因となったイベントに関する詳細な情報はわかりません。 呼び出し履歴を調べて、例外の原因となった一連の呼び出しを確認することはできますが、それらの呼び出し中に発生したイベントのシーケンスを確認することはできません。 IntelliTrace を使用すると、例外の前に発生したイベントを確認できます。

  • アプリは、テスト コンピューターではクラッシュしますが、開発用コンピューターでは正常に実行します。

    Microsoft テスト マネージャーから IntelliTrace データを収集して、.iTrace ファイルにデータを保存し、後日確認できるようにこのファイルを Team Foundation Server の作業項目に添付することができます。 「手動テストでの複数の診断データの収集」および「保存された IntelliTrace データを使用したアプリのデバッグ」を参照してください。

  • バグまたはクラッシュが配置されて実行中のアプリで発生します。

    Microsoft Azure ベースのアプリの場合、アプリを発行する前に IntelliTrace データの収集を構成できます。 アプリの実行中、IntelliTrace はデータを .iTrace ファイルに保存します。 「IntelliTrace および Visual Studio を使用した発行済みのクラウド サービスのデバッグ」を参照してください。

    IIS 7.0、7.5、および 8.0 でホストされる ASP.NET Web アプリ、および SharePoint 2010 アプリケーションや SharePoint 2013 アプリケーションの場合、Microsoft Monitoring Agent を単独で、または System Center 2012 と連携して使用して、IntelliTrace データを .iTrace ファイルに保存できます。

    これは、配置されたアプリの問題を診断する場合に便利です。 「IntelliTrace スタンドアロン コレクターを使用した稼働中の診断データの収集」を参照してください。

IntelliTrace が収集するデータ

イベント情報の収集

既定では、IntelliTrace は IntelliTrace イベントだけを記録します。 これらは、デバッガー イベント、例外、.NET Framework イベント、デバッグに役立つその他のシステム イベントです。 常に収集されるデバッガー イベントと例外を除き、収集する IntelliTrace イベントの種類を選択できます。 「デバッグ情報収集のための IntelliTrace の構成」を参照してください。

  • デバッガーのイベント

    IntelliTrace は、Visual Studio デバッガーに発生するイベントを常に記録します。 たとえば、アプリの起動はデバッガー イベントです。 その他のデバッガー イベントは、アプリの実行を中断する停止イベントです。 たとえば、プログラムはブレークポイントをヒットしたり、トレースポイントをヒットしたり、[ステップ] コマンドを実行したりします。

    パフォーマンスを向上するため、IntelliTrace はデバッガー イベントのすべての値を記録しません。 代わりに、次の値を記録します。

    • [ローカル] ウィンドウの値。 これらの値を確認するために [ローカル] ウィンドウを開いたままにします。

    • [自動変数] ウィンドウが開いているときにのみ [自動変数] ウィンドウの値

    • 値を表示するためにソース ウィンドウの変数の上にマウス ポインターを移動すると表示されるデータヒントの値。 IntelliTrace は、固定されたデータヒントの値は収集しません。

  • 例外

    IntelliTrace は、次のような種類の例外の種類とメッセージを記録します。

    • 例外がスローおよびキャッチされた場合の処理済みの例外

    • ハンドルされない例外

  • .NET Framework イベント

    既定では、IntelliTrace は最も一般的な .NET Framework のイベントを記録します。 次に例を示します。

    • ファイル アクセス イベントの場合、IntelliTrace はファイル名を収集します。

    • チェック ボックスの確認イベントの場合、IntelliTrace はチェック ボックスの状態とテキストを収集します。

  • SharePoint 2010 アプリケーション イベントと SharePoint 2013 アプリケーション イベント

    Visual Studio の外部で実行されている SharePoint 2010 アプリケーションと SharePoint 2013 アプリケーションのユーザー プロファイル イベントと Unified Logging System (ULS) イベントのサブセットを記録できます。 これらのイベントを .iTrace ファイルに保存できます。 トレース モードで実行されている Visual Studio Ultimate 2013 または Microsoft Monitoring Agent のいずれかが必要です。

    .iTrace ファイルを開いたら、SharePoint 相関 ID を入力して対応する Web 要求を見つけ、記録されたイベントを表示し、特定のイベントからのデバッグを開始します。 ファイルにハンドルされない例外が含まれている場合は、相関 ID を選択して例外のデバッグを開始できます。

    参照トピック

関数呼び出し情報の収集

関数の呼び出し情報を収集するように IntelliTrace を構成することができます。 この情報は、呼び出し履歴を表示したり、コードの呼び出しで前後に移動できます。 各関数呼び出しについて、IntelliTrace は次のデータを記録します。

  • 関数名

  • 関数のエントリ ポイントでパラメーターとして渡され、関数の終了ポイントで返されるプリミティブ データ型の値

  • 読み取りまたは変更されたときの自動プロパティの値

  • null かどうかの場合以外の値を除く、1 番目のレベルの子オブジェクトへのポインター

注意

IntelliTrace は、配列の最初の 256 個のオブジェクトと文字列の最初の 256 文字のみを収集します。

デバッグ情報収集のための IntelliTrace の構成」を参照してください。

モジュール情報の収集

IntelliTrace で収集される呼び出し情報の量を制御するには、目的のモジュールのみを指定します。 これにより、収集時のアプリのパフォーマンスを向上させることができます。 「デバッグ情報収集のための IntelliTrace の構成」を参照してください。

IntelliTrace はアプリの速度を低下するか

既定では、選択された IntelliTrace イベントについてのみ情報が収集されます。 これが原因でアプリの速度が低下するかどうかは、コードの構造と構成によって決まります。 たとえば、IntelliTrace がイベントを頻繁に記録する場合はアプリの速度が低下することがありますが、同時にアプリのリファクタリングを考慮するよう求められる場合があります。

呼び出し情報を収集すると、アプリの速度が大幅に低下する可能性があります。 さらに、ディスクに保存される IntelliTrace ログ ファイル (.iTrace ファイル) のサイズが増加する可能性があります。 これらの影響を最小限に抑えるには、必要なモジュールのみから呼び出し情報を収集するようにします。 .iTrace ファイルの最大サイズを変更するには、[ツール][オプション][IntelliTrace][詳細設定] の順に選択します。 「デバッグ情報収集のための IntelliTrace の構成」を参照してください。

情報の入手方法

IntelliTrace によるデバック中のコード実行の記録

デバッグ情報収集のための IntelliTrace の構成

診断トレース データへの再現が困難なバグの組み込み

配置後に問題を診断するためのリリースのセットアップ

保存された IntelliTrace データを使用したアプリのデバッグ

ブログ

Visual Studio ALM + Team Foundation Server

フォーラム

Visual Studio の診断

ガイダンス

Visual Studio 2012 を使用した継続的配信のテスト – 第 6 章: テスト ツールボックス