Share via


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

Visual Studio Ultimate の IntelliTrace を使用してコードまたはアプリの実行履歴を記録およびトレースするには、通常どおりにデバッグを開始します。 既定では、IntelliTrace はオンに設定されているため、自動的に特定のイベントおよびデータを記録します。このため、アプリで発生したことがより簡単にわかります。 「IntelliTrace を使用したコード実行の記録によるアプリのデバッグ」を参照してください。

IntelliTrace がオンになっていることを確認するには

Visual Studio の IntelliTrace の有効化または無効化

注意

[IntelliTrace を有効にする] をオフにすると、IntelliTrace のすべてのカスタム設定がオフになります。これらの設定は、すべてのプロジェクトとソリューションに適用されます。また、デバッグ セッションや Visual Studio セッションが変わっても維持されます。

目的に合ったトピックをクリックしてください

  • イベントのみでデバッグ

  • IntelliTrace が記録するイベントの選択

  • イベントと呼び出し情報でデバッグ

  • IntelliTrace が呼び出し情報をどの程度記録するかの制御

  • IntelliTrace セッションの保存

イベントのみでデバッグ

IntelliTrace イベントのみでデバッグして、イベントだけでバグを検出できるかどうかを試してみることができます。 IntelliTrace イベントは、デバッガー イベント、例外、.NET Framework イベント、およびその他のシステム イベントです。 特定のイベントをオンまたはオフにすると、IntelliTrace が記録するイベントを制御できます。ただし、このオンとオフの切り替えはデバッグを開始する前に行ってください。

IntelliTrace イベントのみでのデバッグに関する視覚的な概要を次に示します。

IntelliTrace イベントのみ - バグの再現

IntelliTrace イベントのみ - イベントの詳細とコード

IntelliTrace イベントのみ - バグの検出

ページのトップへ

IntelliTrace イベントのみでデバッグするための詳細な手順を次に示します。

  1. 通常どおりデバッグを開始します。 バグを再現します。

    ヒント

    これらのウィンドウに表示される値を表示および記録するために [ローカル] ウィンドウおよび [自動変数] ウィンドウを開いたままにします。デバッグを開始するには、F5 キーを押すか、または [デバッグ] メニューの [デバッグ開始] を選択します。デバッグの開始時に [IntelliTrace] ウィンドウが表示されない場合は、IntelliTrace がオンになっていないか、またはウィンドウが閉じている可能性があります。[IntelliTrace] ウィンドウを開くには、[デバッグ][IntelliTrace][IntelliTrace イベント] の順にクリックします。

  2. アプリの実行を手動で中断します。

    ヒント

    [デバッグ] メニューまたは [IntelliTrace] ウィンドウで [すべて中断] を選択します。

    これで、[IntelliTrace] ウィンドウにイベントの時系列の一覧が表示されます。この一覧の先頭には最初のイベントが、また末尾にはデバッガーが実行を中断したときの最後のイベントが表示されています。

    診断イベントが表示された [IntelliTrace] ウィンドウ

  3. バグを再現した場所に最も近いイベントを見つけます。この場合は、アプリが実行を中断する前です。

  4. イベント選択して詳細を展開します。

    • ソース コードが使用可能な場合、Visual Studio によってポインターがソース ウィンドウ内の対応するコードに移動されるため、そのコードを調査できます。

    • イベントが発生したときに IntelliTrace が記録したデータを表示するには、[関連ビュー] リンクを選択して対応するデバッガー ウィンドウを表示します。

    • イベントがファイル アクセス イベントの場合、パス名のリンクを選択してファイルを開きます。 完全なパス名を使用できない場合、表示される検索ボックスを使用してファイルを検索します。

  5. バグが見つからない場合は、バグが発生するまでの間に発生した他のイベントを確認します。 また、IntelliTrace で呼び出し情報を記録することで、関数呼び出しをステップ実行することもできます。

ページのトップへ

IntelliTrace が記録するイベントの選択

IntelliTrace が常に記録するデバッガー イベントと例外を除き、特定の IntelliTrace イベントの記録をオンまたはオフにできます。

  1. デバッグ中の場合、デバッグを停止します。 それ以外の場合は、イベントを選択した後でデバッグを再開します。

  2. [ツール][オプション][IntelliTrace][IntelliTrace イベント] の順に選択します。 IntelliTrace が記録するイベントとイベント カテゴリを選択します。

    IntelliTrace イベントの収集の構成

ページのトップへ

イベントと呼び出し情報でデバッグ

バグを見つけるためにアプリの関数呼び出しシーケンスを確認する必要がある場合は、IntelliTrace でイベントと共に関数呼び出しを記録できます。 これによって、呼び出し履歴を確認し、コード内の呼び出しを後方または前方に向かって順に確認できます。また、関数名、関数のエントリ ポイントと終了ポイント、特定のパラメーター値と戻り値など、IntelliTrace が記録したデータを表示できます。 「IntelliTrace を使用したコード実行の記録によるアプリのデバッグ」を参照してください。

  1. デバッグ中の場合、デバッグを停止します。 これ以外の場合は、呼び出しコレクションを有効にしてからデバッグを再開します。

  2. 呼び出しコレクションをオンにします。

    IntelliTrace の呼び出し収集の構成

    ヒント

    これにより、アプリの実行速度が低下したり、ディスクに保存中の IntelliTrace ログ ファイル (.iTrace ファイル) のサイズが増大する場合があります。影響を最小限に抑えながら大半の呼び出しデータを取得するには、関心のあるモジュールからのデータだけを記録します。.iTrace ファイルの最大サイズを変更するには、[ツール][オプション][IntelliTrace][詳細設定] の順に選択します。

  3. 通常どおりデバッグを開始します。 バグを再現します。

    ヒント

    これらのウィンドウに表示される値を表示および記録するために [ローカル] ウィンドウおよび [自動変数] ウィンドウを開いたままにします。デバッグを開始するには、F5 キーを押すか、または [デバッグ] メニューの [デバッグ開始] を選択します。デバッグの開始時に [IntelliTrace] ウィンドウが表示されない場合は、IntelliTrace がオンになっていないか、またはウィンドウが閉じている可能性があります。[IntelliTrace] ウィンドウを開くには、[デバッグ][IntelliTrace][IntelliTrace イベント] の順にクリックします。

  4. アプリの実行を手動で中断します。

    ヒント

    [デバッグ] メニューまたは [IntelliTrace] ウィンドウで [すべて中断] を選択します。

  5. バグを再現した場所に最も近いイベントを探します。 「イベントのみでデバッグ」を参照してください。

  6. イベント選択して詳細を展開します。 [関連ビュー] の横の [呼び出し] ビューを選択します。

    診断イベントが表示された [IntelliTrace] ウィンドウ

    これによって、アプリの呼び出し履歴が表示されます。この履歴の先頭には、アプリのルート呼び出しが表示され、末尾には、リアルタイムでの現在の呼び出しではなく、選択したイベントに関連する現在の呼び出しが表示されます。

    [IntelliTrace] ウィンドウの呼び出しビュー

    現在の呼び出しの下にインデント付きで別の一覧が表示されます。この一覧には、その他の関数に対して行われた現在の呼び出しが表示されます。 また、このインデントされた一覧には、現在の呼び出しの IntelliTrace イベントも表示されます。

    注意

    呼び出しは、IntelliTrace が対応するモジュールのデータを記録しなかったため、淡色表示になります。このデータを表示するには、IntelliTrace がそのモジュールからデータを収集するようにします。

  7. 選択したイベントに続く呼び出しを検索します。 この呼び出しをダブルクリックすると、ステップ インできます。

    [呼び出し] ビュー ウィンドウで、呼び出し履歴の一番下にステップ インした呼び出しが新しい現在の呼び出しとして表示されます。 インデントされた一覧には、呼び出しとこの新しい現在の呼び出しのイベントが表示されます。 ソース ウィンドウとデバッガー ウィンドウも、この新しい現在の呼び出しに対して更新されます。

    ヒント

    呼び出しサイトを確認するだけの場合は、[呼び出し] ビュー ウィンドウ内でその呼び出しをダブルクリックではなくシングルクリックします。この操作では、ポインターは呼び出しサイトに移動しますが、呼び出しにステップ インしないため、現在の呼び出し内にいます。

  8. 呼び出しとイベントをステップ実行するには、呼び出し情報が使用できるときに、ソース ウィンドウの横に表示されるナビゲーション余白を使用します。 ナビゲーション余白が表示されない場合は、[ツール][オプション][IntelliTrace][詳細設定] の順に選択します。 [デバッグ モードでナビゲーション余白を表示] を選択します。

    デバッガー コンテキストをここに設定

    これが表示される呼び出しタイム フレームにデバッグ コンテキストを設定します。

    このアイコンは、現在の呼び出し履歴の各フレームにのみ表示されます。

    呼び出しサイトに戻る

    ポインターとデバッグ コンテキストを現在の関数が呼び出された時点に戻します。

    従来のデバッグ モードで操作しているときにこのコマンドを実行すると、IntelliTrace によるデバッグが開始されます。

    前の呼び出しまたは IntelliTrace イベントへ移動

    ポインターとデバッグ コンテキストを直前の呼び出しまたはイベントの時点に戻します。

    従来のデバッグ ノードで操作しているときにこのコマンドを実行すると、IntelliTrace によるデバッグが開始されます。

    ステップ イン

    ポインターとデバッグ コンテキストを現在選択されている関数の時点まで進めます。

    このコマンドは、IntelliTrace によるデバッグ中にのみ使用できます。

    次の呼び出しまたは IntelliTrace イベントへ移動

    ポインターとデバッグ コンテキストを IntelliTrace データが存在する次の呼び出しまたはイベントの時点まで進めます。

    このコマンドは、IntelliTrace によるデバッグ中にのみ使用できます。

    ライブ モードへ移動

    IntelliTrace でデバッグを開始した従来のデバッグに戻ります。

  9. 特定の呼び出しのインスタンスを検索するには、IntelliTrace 履歴でその呼び出しの記録済みのインスタンスを検索します。

    1. 呼び出し元のコード行から:

      IntelliTrace デバッグ中に呼び出しインスタンスを検索

      注意

      行がメソッド出口である場合、正確な結果を得ることはできません。

      または

      呼び出される関数の本体から:

      1. 関数を含むプロジェクト ファイルが Visual Studio で開いていることを確認します。

      2. 関数の本体内でショートカット メニューを開きます。 [このメソッドを IntelliTrace で検索] を選択します。

    2. 必要なインスタンスを見つけるために結果を参照します。 [呼び出し] ビュー ウィンドウを同期化し、そのインスタンスについて記録されたデータを確認するインスタンスを選択します。

ページのトップへ

IntelliTrace が呼び出し情報をどの程度記録するかの制御

IntelliTrace では、関心のあるモジュールに関してのみ、呼び出し情報を記録できます。 これにより、アプリのパフォーマンスを向上させることができます。

複数のモジュールを追加するには、ワイルドカード文字 * を文字列の先頭または末尾に使用します。 モジュール名には、アセンブリ名ではなくファイル名を使用してください。 ファイル パスは使用できません。

IntelliTrace のモジュール収集の構成

注意

モジュールを除外しても、サードパーティのモジュールやオープン ソースのモジュールなど、必要のない可能性があるモジュールからのデータが収集されることがあります。

ページのトップへ

IntelliTrace セッションの保存

後でセッションを続行するには、IntelliTrace ログ ファイル (.iTrace ファイル) としてセッションを保存します。

セッションの手動保存

Visual Studio での IntelliTrace の手動による保存

セッションの自動保存

IntelliTrace セッションの自動保存

ヒント

.iTrace ファイルが必要なくなった場合は、ディスク領域を節約するために .iTrace ファイルの保存をオフにします。既存の .iTrace ファイルはそのまま残ります。

IntelliTrace は大量のデータを収集できるため、Visual Studio では .iTrace ファイルの既定のサイズを 250 MB に制限しています。ファイルがこの限界に達すると、Visual Studio は最も古いエントリを削除して、新しいエントリを記録する場所を確保します。既定の制限よりも多くのデータを保存するには、ファイルの最大記録サイズを変更します。

Visual Studio では、.iTrace ファイルが自動保存されるときと Visual Studio のホスティング プロセス (vshost.exe) をオンにしたときに、IntelliTrace セッションごとに 2 つの .iTrace ファイルが作成されます。Visual Studio では、アプリおよびホスティング プロセスごとに 1 つの .iTrace ファイルが作成されます。既定でオンになっているこのプロセスにより、デバッグのパフォーマンスが向上すると共に特定のデバッグ機能が有効になります。

.iTrace ファイルに格納されるデータとは

.iTrace ファイルには、例外、スレッド、Web 要求、テスト データ、モジュール、およびその他のシステム情報に関する詳細情報が含まれています。 Visual Studio Ultimate でファイルを開き、項目を選択して、デバッグを開始するとき、ファイル内のすべてのイベントに移動して、その時点でのアプリについての関連コードおよび記録済みデータを確認できます。 「保存された IntelliTrace データを使用したアプリのデバッグ」を参照してください。

自分の開発環境での再現が難しい、Microsoft テスト マネージャーでのテスト中に発生したエラーまたはクラッシュをデバッグするには、IntelliTrace データを収集するようにテスト マネージャーを構成してみます。 このデータを .iTrace ファイルに保存し、より詳細な調査のために Team Foundation Server の作業項目に添付できます。 「失敗したテストの分析とバグの追跡」を参照してください。

稼動環境などのシステム構成の変更ができない場所で発生したエラーまたはクラッシュをデバッグするには、スタンドアロン コレクターを使用して IntelliTrace データを .iTrace ファイルに保存するようにしてください。 「IntelliTrace スタンドアロン コレクターを使用した稼働中の診断データの収集」を参照してください。

ページのトップへ

情報の入手方法

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

IntelliTrace スタンドアロン コレクターを使用した稼働中の診断データの収集

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

ブログ

Visual Studio ALM + Team Foundation Server

フォーラム

Visual Studio デバッガー

ガイダンス

Testing for Continuous Delivery with Visual Studio 2012 – Chapter 6: A Testing Toolbox (Visual Studio 2012 を使用した絶え間のない配信のためのテスト – 第 6 章: テスト ツールボックス)

ビデオ

Channel 9 ビデオ: 稼働中のデータ収集および分析