次の方法で共有


スタンドアロン コレクターを使用した Visual Studio の外部での IntelliTrace データの収集

実稼働環境やその他の環境でアプリをデバッグするには、IntelliTrace コレクターを使用して診断データを IntelliTrace ログ ファイル (.iTrace ファイル) に保存します。これにより、Visual Studio をインストールしたりアプリの環境を変更したりすることなく、アプリで起こっていることを記録できます。データを収集したら、コレクターを削除して、アンインストールします。

稼働中のデータ収集および分析 (Channel 9 ビデオ)」で IntelliTrace の機能をご覧ください。

要件

  • .NET Framework 3.5、4、または 4.5

  • .iTrace ファイルを開くための、開発用コンピューターまたは別のコンピューターにインストールされた Visual Studio Ultimate

    [!メモ]

    必ずシンボル (.pdb) ファイルを保存してください。IntelliTrace でデバッグおよびコードのステップ実行を行うには、対応するソース ファイルとシンボル ファイルが必要です。「シンボル (.pdb) ファイル、ソース ファイル、およびバイナリ ファイルの検索」を参照してください。

FAQ

  • コレクターで使用できるアプリ

  • 開始方法

  • アプリのパフォーマンスの低下なしにほとんどのデータを取得する方法

  • IntelliTrace データを取得できるその他の場所

コレクターで使用できるアプリ

  • インターネット インフォメーション サービス (IIS) Version 7.0、7.5、および 8.0 によってホストされる ASP.NET アプリ

  • SharePoint 2010 アプリケーション

  • マネージ デスクトップ アプリ (.exe ファイル)

開始方法

  1. コレクターのインストール

  2. Set up permissions for the collector directory.

  3. Web アプリまたは SharePoint アプリケーションのデータを収集するための IntelliTrace PowerShell コマンドレットのインストール

  4. .iTrace ファイル ディレクトリのアクセス許可の設定

  5. Web アプリまたは SharePoint アプリケーションからのデータの収集

    または

    マネージ アプリからのデータの収集

  6. Visual Studio Ultimate で .iTrace ファイルを開く

コレクターのインストール

  1. アプリのサーバーで、コレクター ディレクトリ (たとえば、C:\IntelliTraceCollector) を作成します。

  2. Microsoft ダウンロード センターまたは Visual Studio インストール フォルダーからコレクターを入手します。

    • Microsoft ダウンロード センター:

      1. アプリのサーバーで、「Visual Studio IntelliTrace コレクター」にアクセスします。

      2. IntelliTraceCollector.exe の横の [ダウンロード] を選択します。

      3. IntelliTraceCollector.exe をコレクター ディレクトリ (たとえば、C:\IntelliTraceCollector) に保存します。

      4. IntelliTraceCollector.exe を実行します。IntelliTraceCollection.cab ファイルが抽出されます。

      または

    • Visual Studio インストール フォルダー:

      [!メモ]

      SharePoint 2010 アプリケーションの診断イベントをサポートするコレクターを入手するには、Visual Studio IntelliTrace コレクターをダウンロードするか、または Visual Studio 2012.1 がインストールされていることを確認してください。

      1. 次のフォルダーから IntelliTraceCollection.cab をコピーします。

        ..\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0

      2. IntelliTraceCollection.cab をコレクター ディレクトリ (たとえば、C:\IntelliTraceCollector) に保存します。

  3. IntelliTraceCollection.cab を展開します。

    1. アプリのサーバーで、管理者としてコマンド プロンプト ウィンドウを開きます。

    2. コレクター ディレクトリ (たとえば、C:\IntelliTraceCollector) を参照します。

    3. 末尾のピリオド (.) も含めて expand コマンドを使用して、IntelliTraceCollection.cab を展開します。

      expand /f:* IntelliTraceCollection.cab .

      [!メモ]

      ピリオド (.) を指定することにより、ローカライズされた収集計画を含むサブフォルダーが保持されます。

コレクター ディレクトリのアクセス許可の設定

  1. On your app’s server, open a command prompt window as an administrator.

  2. Windows の icacls コマンドを使用して、サーバー管理者に、コレクター ディレクトリに対する完全なアクセス許可を与えます。次に例を示します。

    icacls "C:\IntelliTraceCollector" /grant "<Domain\AdministratorID>":F

  3. Web アプリまたは SharePoint アプリケーションのデータを収集するには:

    1. IntelliTrace PowerShell コマンドレットを実行するユーザーに、コレクター ディレクトリに対する完全なアクセス許可を与えます。

      次に例を示します。

      icacls "C:\IntelliTraceCollector" /grant "<Domain\UserID>":F

    2. Web アプリまたは SharePoint アプリケーションのアプリケーション プールに、コレクター ディレクトリに対する読み取りおよび実行アクセス許可を与えます。

      次に例を示します。

      • DefaultAppPool アプリケーション プールの Web アプリの場合:

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX

      • SharePoint - 80 アプリケーション プールの SharePoint アプリケーションの場合:

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX

Web アプリまたは SharePoint アプリケーションのデータを収集するための IntelliTrace PowerShell コマンドレットのインストール

  1. アプリのサーバーで、PowerShell が有効になっていることを確認します。Windows Server のほとんどのバージョンでは、サーバー マネージャー管理ツールを使用してこの機能を追加できます。

    サーバー マネージャーを使用した PowerShell の追加

  2. IntelliTrace PowerShell コマンドレットをインストールします。

    1. 管理者として PowerShell コマンド ウィンドウを開きます。

      1. [スタート][すべてのプログラム][アクセサリ][Windows PowerShell] の順に選択します。

      2. 次のいずれかの操作を実行します。

        • 64 ビット オペレーティング システムでは、[Windows PowerShell] のショートカット メニューを開きます。[管理者として実行] を選択します。

        • 32 ビット オペレーティング システムでは、[Windows PowerShell (x86)] のショートカット メニューを開きます。[管理者として実行] を選択します。

    2. PowerShell コマンド ウィンドウで、Import-Module コマンドを使用して Microsoft.VisualStudio.IntelliTrace.PowerShell.dll をインポートします。

      次に例を示します。

      Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"

.iTrace ファイル ディレクトリのアクセス許可の設定

  1. アプリのサーバーで、.iTrace ファイル ディレクトリ (たとえば、C:\IntelliTraceLogFiles) を作成します。

    [!メモ]

    • アプリの処理が低下するのを回避するには、あまりアクティブではないローカルの高速なディスク上の場所を選択してください。

    • .iTrace ファイルとコレクター ファイルは同じ場所に配置できます。ただし、Web アプリまたは SharePoint アプリケーションがある場合は、この場所がアプリケーションをホストするディレクトリの外部にあることを確認します。

    セキュリティに関するメモセキュリティに関するメモ
    • .iTrace ファイル ディレクトリへのアクセスを、コレクターを使用する必要がある ID のみに制限します。IntelliTrace はメソッド パラメーターに渡されるデータや戻り値として渡されるデータを記録できるため、ユーザー、データベース、その他のソースの場所、および接続文字列のデータなどの重要情報が .iTrace ファイルに含まれることがあります。

    • .iTrace ファイルを開くことができるユーザーが、重要情報を表示する権限が与えられているユーザーであることを確認します。.iTrace ファイルを共有する場合は注意してください。他のユーザーがアクセスを必要とするときは、安全な共有の場所にファイルをコピーします。

  2. Web アプリまたは SharePoint アプリケーションのアプリケーション プールに、.iTrace ファイル ディレクトリに対する完全なアクセス許可を与えます。Windows の icacls コマンドまたはエクスプローラー (またはファイル エクスプローラー) を使用できます。

    次に例を示します。

    • Windows の icacls コマンドを使用してアクセス許可を設定するには:

      • For a Web app in the DefaultAppPool application pool:

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F

      • For a SharePoint application in the SharePoint - 80 application pool:

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F

      または

    • エクスプローラー (またはファイル エクスプローラー) を使用してアクセス許可を設定するには:

      1. .iTrace ファイル ディレクトリの [プロパティ] を開きます。

      2. [セキュリティ] タブで、[編集][追加] を順に選択します。

      3. [オブジェクトの種類を選択してください] ボックスに [ビルトイン セキュリティ プリンシパル] が表示されることを確認します。表示されない場合は、[オブジェクトの種類] を選択してこれを追加します。

      4. ローカル コンピューターが [場所の指定] ボックスに表示されることを確認します。表示されない場合は、[場所] を選択してこれを追加します。

      5. [選択するオブジェクト名を入力してください] ボックスに、Web アプリまたは SharePoint アプリケーションのアプリケーション プールを追加します。

      6. [名前の確認] を選択して名前を解決します。[OK] をクリックします。

      7. アプリケーション プールに対してフル コントロールのアクセス許可が設定されていることを確認します。

Web アプリまたは SharePoint アプリケーションからのデータの収集

  1. データの収集を開始するには、PowerShell のコマンド ウィンドウを管理者として開き、次のコマンドを実行します。

    Start-IntelliTraceCollection"<ApplicationPool>"<PathToCollectionPlan><FullPathToITraceFileDirectory>

    重要 : 重要

    このコマンドを実行した後、「Y」と入力してデータ収集を開始することを確認します。

    たとえば、SharePoint - 80 アプリケーション プールの SharePoint アプリケーションからデータを収集するには、次のように入力します。

    Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"

    ApplicationPool

    アプリケーションが実行されるアプリケーション プールの名前

    PathToCollectionPlan

    収集計画 (コレクターの設定を構成する .xml ファイル) へのパス。

    コレクターに付属する計画を指定できます。次の計画は、Web アプリと SharePoint アプリケーションに対して動作します。

    • collection_plan.ASP.NET.default.xml

      例外、データベース呼び出し、および Web サーバー要求を含む IntelliTrace イベントと SharePoint イベントのみを収集します。

    • collection_plan.ASP.NET.trace.xml

      関数呼び出しと、collection_plan.ASP.NET.default.xml のすべてのデータを収集します。この計画は詳細な分析に適していますが、collection_plan.ASP.NET.default.xml よりもアプリの速度が低下する場合があります。

    アプリの速度が低下するのを回避するには、これらの計画をカスタマイズするか、独自に計画を作成します。セキュリティのために、コレクター ファイルと同じ安全な場所にカスタム計画を配置します。「Creating and Customizing IntelliTrace Collection Plans (IntelliTrace 収集計画の作成およびカスタマイズ)」および「アプリのパフォーマンスの低下なしにほとんどのデータを取得する方法」を参照してください。

    メモメモ
    既定では、.iTrace ファイルの最大サイズは 100 MB です。.iTrace ファイルがこの制限に達すると、ファイル中の最も古いエントリが削除され、新しいエントリを記録する場所が確保されます。この制限を変更するには、収集計画の MaximumLogFileSize 属性を編集します。

    これらの収集計画のローカライズ バージョンはどこで見つけられますか。

    ローカライズされた計画は、コレクターのサブフォルダーに格納されています。

    FullPathToITraceFileDirectory

    .iTrace ファイル ディレクトリへの完全パス。

    セキュリティに関するメモセキュリティに関するメモ
    相対パスではなく完全パスを指定します。

    コレクターがアプリケーション プールにアタッチされ、データ収集が開始されます。

    現時点で .iTrace ファイルを表示できますか。いいえ。データ収集中はファイルがロックされます。

  2. 問題を再現します。

  3. .iTrace ファイルのスナップショットを取得するには、次の構文を使用します。

    Checkpoint-IntelliTraceCollection"<ApplicationPool>"

  4. コレクションの実行状態を確認するには、次の構文を使用します。

    Get-IntelliTraceCollectionStatus

  5. データ収集を停止するには、次の構文を使用します。

    Stop-IntelliTraceCollection"<ApplicationPool>"

    重要 : 重要

    このコマンドを実行した後、「Y」と入力してデータ収集を停止することを確認します。この操作を行わないと、コレクターはデータを収集し続けます。iTrace ファイルはロックされたままになり、ファイルに有用なデータが含まれなくなる可能性があります。

  6. Visual Studio Ultimate で .iTrace ファイルを開く

マネージ アプリからのデータの収集

  1. アプリを起動すると同時にデータの収集を開始するには、次の構文を使用します。

    <FullPathToIntelliTraceCollectorExecutable>\IntellitraceSC.exe launch /cp:<PathToCollectionPlan>/f:<FullPathToITraceFileDirectoryAndFileName><PathToAppExecutableFileAndFileName>

    たとえば、MyApp という名前のアプリからデータを収集するには、次のように入力します。

    C:\IntelliTraceCollector\IntelliTraceSC.exe launch /cp:"C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" /f:"C:\IntelliTraceLogFiles\MyApp.itrace" "C:\MyApp\MyApp.exe"

    FullPathToIntelliTraceCollectorExecutable

    コレクターの実行可能ファイルである IntelliTraceSC.exe への完全パス。

    PathToCollectionPlan

    The path to a collection plan, an .xml file that configures settings for the collector.

    You can specify a plan that comes with the collector.次の計画は、マネージ アプリに対して動作します。

    • collection_plan.ASP.NET.default.xml

      例外、データベース呼び出し、および Web サーバー要求を含む IntelliTrace イベントのみを収集します。

    • collection_plan.ASP.NET.trace.xml

      Collects function calls and all the data in collection_plan.ASP.NET.default.xml.This plan is good for detailed analysis, but it might slow down your app more than collection_plan.ASP.NET.default.xml.

    To avoid slowing down your app, customize these plans or create your own plan.For security, put any custom plans in the same secure location as the collector files.「Creating and Customizing IntelliTrace Collection Plans (IntelliTrace 収集計画の作成およびカスタマイズ)」および「アプリのパフォーマンスの低下なしにほとんどのデータを取得する方法」を参照してください。

    メモメモ
    By default, the max size of the .iTrace file is 100 MB.When the .iTrace file reaches this limit, the collector deletes the file’s earliest entries to make space for newer entries.To change this limit, edit the collection plan’s MaximumLogFileSize attribute.

    これらの収集計画のローカライズ バージョンはどこで見つけられますか。

    You can find localized plans in the collector's subfolders.

    FullPathToITraceFileDirectoryAndFileName

    .iTrace ファイル ディレクトリへの完全パスと、拡張子 .itrace を含む .iTrace ファイル名。

    セキュリティに関するメモセキュリティに関するメモ
    Provide the full path, not a relative path.

    PathToAppExecutableFileAndFileName

    マネージ アプリのパスとファイル名。

  2. アプリを終了し、データ収集を停止します。

  3. Visual Studio Ultimate で .iTrace ファイルを開く

Visual Studio Ultimate で .iTrace ファイルを開く

  1. Visual Studio Ultimate を使用するコンピューターに、.iTrace ファイルを移動またはコピーします。

  2. Visual Studio の外部で .iTrace ファイルをダブルクリックするか、Visual Studio 内からファイルを開きます。

    Visual Studio に [IntelliTrace の概要] ページが表示されます。ほとんどのセクションにおいて、イベントまたは他の項目を確認したうえで項目を選択し、イベントが発生したポイントで IntelliTrace を使用してデバッグを開始できます。「IntelliTrace ログ (.iTrace) ファイルによるアプリのデバッグ」を参照してください。

    [!メモ]

    To debug with IntelliTrace and step through code, you must have the matching source files and symbol files.シンボル ファイルが Visual Studio のシンボル パスにあることを確認してください。シンボル パスにない場合、Visual Studio がソースの場所を解決できないため、「シンボルが見つかりませんでした」というメッセージが表示されます。「シンボル (.pdb) ファイル、ソース ファイル、およびバイナリ ファイルの検索」を参照してください。

アプリのパフォーマンスの低下なしにほとんどのデータを取得する方法

IntelliTrace では大量のデータを収集できます。そのため、アプリのパフォーマンスへの影響は、IntelliTrace で収集するデータの種類、および分析するコードの種類によって決まります。「Optimizing IntelliTrace Collection on Production Servers (運用サーバーでの IntelliTrace 収集の最適化)」を参照してください。

アプリのパフォーマンスが低下することなく、ほとんどのデータを取得する方法を次に示します。

  • 問題があると思われる場合や、問題を再現できる場合にのみ、コレクターを実行します。

    収集を開始し、問題を再現し、収集を停止します。Visual Studio Ultimate で .iTrace ファイルを開き、データを確認します。「Visual Studio Ultimate で .iTrace ファイルを開く」を参照してください。

  • Web アプリおよび SharePoint アプリケーションの場合、コレクターは、指定されたアプリケーション プールを共有するすべてのアプリのデータを記録します。そのため、収集計画で指定できるのは 1 つのアプリのモジュールのみであるにもかかわらず、同じアプリケーション プールを共有するすべてのアプリの速度が低下する可能性があります。

    コレクターによって他のアプリの速度が低下するのを回避するためには、それぞれのアプリを専用のアプリケーション プールでホストします。

  • IntelliTrace がデータを収集する計画のイベントを確認します。関連性のない、または希望しないイベントを無効にするよう、収集計画を編集します。

    イベントを無効にするには、<DiagnosticEventSpecification> 要素の enabled 属性を false に設定します。

    <DiagnosticEventSpecification enabled="false">

    enabled 属性がない場合、イベントが有効になります。

    これにより、どのようにパフォーマンスが向上しますか。

    • アプリに関連しないイベントを無効にすると、起動時間を短縮できます。たとえば、Windows Workflow を使用しないアプリの Windows Workflow イベントを無効にします。

    • レジストリにアクセスするアプリのレジストリ イベントを無効にすると、起動およびランタイムのパフォーマンスは向上し、レジストリ設定に関する問題は見られません。

  • IntelliTrace がデータを収集する収集計画のモジュールを確認します。目的のモジュールのみ含めるように収集計画を編集します。

    1. 収集計画を開きます。<ModuleList> 要素を検索します。

    2. <ModuleList> で、isExclusionList 属性を false に設定します。

    3. <Name> 要素を使用して、ファイル名、文字列が名前を含まれるモジュールを含む文字列値、または公開キーのいずれかで各モジュールを指定します。

    たとえば、Fabrikam Fiber Web アプリの通常のメイン Web モジュールからデータを収集するには、次のようなリストを作成します。

    <ModuleList isExclusionList="false">
       <Name>FabrikamFiber.Web.dll</Name>
    </ModuleList>
    

    名前に "Fabrikam" が含まれるモジュールからデータを収集するには、次のようなリストを作成します。

    <ModuleList isExclusionList="false">
       <Name>Fabrikam</Name>
    </ModuleList>
    

    公開キー トークンを指定してモジュールからデータを収集するには、次のようなリストを作成します。

    <ModuleList isExclusionList="false">
       <Name>PublicKeyToken:B77A5C561934E089</Name>
       <Name>PublicKeyToken:B03F5F7F11D50A3A</Name>
       <Name>PublicKeyToken:31BF3856AD364E35</Name>
       <Name>PublicKeyToken:89845DCD8080CC91</Name>
       <Name>PublicKeyToken:71E9BCE111E9429C</Name>
    </ModuleList>
    

    これにより、どのようにパフォーマンスが向上しますか。

    これにより、メソッド呼び出し情報、およびアプリの開始時と実行時に IntelliTrace が収集するその他のインストルメンテーション データの量が減少します。このデータにより、次のことができます。

    • データ収集後にコードをステップ実行します。

    • 関数呼び出しとの間で受け渡しされる値を確認します。

    代わりにモジュールを除外しないのですか。

    既定では、収集計画は isExclusionList 属性を true に設定してモジュールを除外します。ただし、モジュールを除外しても、リストの条件を満たさないモジュール、必要がない可能性があるサードパーティまたはオープン ソース モジュールなどのモジュールからのデータを収集してしまう可能性があります。

  • IntelliTrace が収集しないデータはありますか。

    はい。パフォーマンスへの影響を抑えるために、IntelliTrace は、データ収集を、メソッドと受け渡しをするプリミティブ データ型の値、およびメソッドと受け渡しをする最上位レベルのオブジェクトのフィールドのプリミティブ データ型の値に制限しています。

    たとえば、整数 id と Employee オブジェクト oldemployee を受け取る AlterEmployee メソッド シグネチャがあるとします。

    public Employee AlterEmployee(int id, Employee oldemployee)

    Employee の型には、Id、Name、および HomeAddress の各属性が含まれます。Employee の型と Address の型との間に、アソシエーション リレーションシップの関係が存在します。

    Employee と Address の間の関係

    コレクターは、AlterEmployee メソッドから返された、id、Employee.Id、Employee.Name、および Employee の各オブジェクトの値を記録します。ただし、null であるかどうかの情報を除き、Address オブジェクトについての情報は記録しません。コレクターは、メソッド パラメーターとして記録される時点のパラメーターとしてそれらのローカル変数を他のメソッドが使用する場合を除き、AlterEmployee メソッドのローカル変数に関するデータは記録しません。

IntelliTrace データを取得できるその他の場所

情報の入手方法

IntelliTrace ログ (.iTrace) ファイルによるアプリのデバッグ

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

Hh398365.collapse_all(ja-jp,VS.110).gifブログ

Using the IntelliTrace Standalone Collector Remotely (リモートで IntelliTrace スタンドアロン コレクターを使用する)

Creating and Customizing IntelliTrace Collection Plans (IntelliTrace 収集計画の作成およびカスタマイズ)

Optimizing IntelliTrace Collection on Production Servers (運用サーバーでの IntelliTrace 収集の最適化)

Visual Studio ALM + TFS Blog (Visual Studio ALM および TFS に関するブログ)

Hh398365.collapse_all(ja-jp,VS.110).gifフォーラム

Visual Studio Debugger

Hh398365.collapse_all(ja-jp,VS.110).gifビデオ

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