dotTrace 2019.2ヘルプ

dotTraceコマンドラインプロファイラの使用

たとえば、継続的インテグレーションビルドの一部をプロファイリングする場合など、パフォーマンススナップショットを収集するプロセスを自動化する必要がある場合があります。(たとえば、これはインテグレーションテストのプロファイリングを実行するビルドステップです)。この目的のために、dotTraceは2つのコマンドラインツール(dotTraceインストールディレクトリーにあります)にバンドルされています。

The tools are also distributed as a separate zip archive(英語)* and as a NuGetパッケージ(英語) . Note that the tools are free of charge and do not require any license keys.

ConsoleProfiler.exeツールを使用したアプリケーションのプロファイリング

コマンドラインツールを使用してアプリケーションをプロファイルするには

  • プロファイリングのシナリオに応じて、ConsoleProfiler.exe を必要なオプションで実行します: たとえば:

    • タイムラインプロファイリングタイプを使用してスタンドアロンアプリケーション App.exe を実行およびプロファイルするには、次の手順を実行します。

      ConsoleProfiler.exe start --save-to=c:\Snapshots\snapshot.dtt --profiling-type=Timeline c:\MyApp\App.exe

    • (デフォルトのサンプリング・プロファイリング・タイプを使用して)スタンドアロン・アプリケーション App.exe を実行およびプロファイルし、プロファイリングAPIを使用してセッションを制御するには、以下のようにします。

      ConsoleProfiler.exe start --save-to=c:\Snapshots\snapshot.dtp c:\MyApp\App.exe --use-api

    • 実行中のアプリケーションに PID=1234 でアタッチし、サンプリングプロファイリングタイプを使用してプロファイリングするには:

      ConsoleProfiler.exe attach 1234 --save-to=c:\Snapshots\snapshot.dtp

    • 使用可能なオプションの完全なリストを表示するには、引数なしでツールを実行します。

      ConsoleProfiler.exe

プロファイルされたアプリケーションの動作が終了すると、ConsoleProfiler.exeツールは自動的にパフォーマンススナップショットを保存します。

ConsoleProfiler.exe終了コード

デフォルトでは、ツールがその作業を正常に終了した場合、その終了コードは 0です。場合によってはこれは不便です。例:CIサーバーでこのツールを実行する場合は、プロファイリングされたアプリケーションの終了コード(単体テストランナーなど)を取得する必要があります。 ConsoleProfiler.exe がプロファイリングターゲットの終了コードを返すようにするには、--propagate-exit-code 引数を使用します。

例:

ConsoleProfiler.exe start --save-to=c:\Snapshots\snapshot.dtp --profiling-type=Sampling c:\MyApp\App.exe --propagate-exit-code

(オプション)XMLファイルを使用したプロファイリングの設定

上記のセクションでは、ConsoleProfiler.exe 引数としてプロファイリング設定(プロファイリングターゲット、プロファイリングメソッドなど)を提供しました。何らかの理由でセッションをこのように構成したくない場合は、構成をXMLファイルで提供できます。

ファイル作成を簡単にするために、Configuration2Xml32.exe (および64ビットバージョン Configuration2Xml64.exe)ツールを使用できます。このツールを使用すると、使い慣れたdotTraceホームウィンドウのユーザーインターフェースを使用してXML構成ファイルを作成できます。

Configuration2Xmlを使用して構成ファイルを作成または変更するには

  1. dotTraceインストールディレクトリー(デフォルトでは C:\Users\[username]\AppData\Local\JetBrains\Installations\dotTrace[N])にある Configuration2Xml32.exe または Configuration2Xml64.exe ツールを実行します。

  2. 新しいプロファイリング設定を作成するには、新しい設定を作成するメニューを選択します。
    既存のプロファイリング設定を変更するには、構成を開くを選択します。

  3. dotTraceホームウィンドウで通常行うようにプロファイリングオプションを指定します。

  4. 保存をクリックして、設定ファイルのファイル名とパスを指定します。

  5. 保存をクリックします。

XMLファイルを使用して設定されたプロファイリングセッションを実行するには

  • コマンドラインで次のコマンドを実行します。

    ConsoleProfiler.exe xmlfile <path_to_config> --save-to=<path_to_snapshot>
    どこで
    <path_to_config> - XML設定ファイルへのパス
    <path_to_snapshot> - 結果のスナップショットファイルへのパス。フルパス(スナップショットのファイル名を含む)またはディレクトリーへのパス(ファイル名なし)のみを指定できます。後者の場合、スナップショットファイルにはランダムな名前が付けられます。

    例:

    ConsoleProfiler.exe xmlfile config.xml --save-to=c:\Snapshots\snapshot.dtp

Reporter.exeツールを使用したパフォーマンスレポートの生成

Reporter.exe ツールは2つのモードで動作します。

  • 特定のメソッドのパフォーマンスデータを取得します
    結果のXMLレポートは、実行時間と特定のメソッドの呼び出し数に関するデータを取得します。

  • スナップショットの比較
    結果のXMLレポートは、実行時間の違いと特定のメソッドの呼び出し数に関するデータを取得します。このモードは、最新のビルドで取得したパフォーマンスデータを何らかの参照スナップショットと比較する場合に特に便利です。

選択するモードにかかわらず、レポートに追加するメソッド名を指定する必要があります。

1. Specifying methods for the report

レポートに追加する必要があるメソッドのリストは、XMLパターンファイルによって定義されます。

パターンファイルを作成するには

  1. 任意のエディターで、空のXMLファイルを作成します。

  2. 次の例に示すように、レポートに追加する必要があるメソッドのリストを記述します。

    <Patterns> <Pattern PrintCallstacks = "MethodNameOnly">Method1</Pattern> <Pattern>Method2</Pattern> </Patterns>
    where

    • Method1Method2 - パフォーマンスデータを取得するメソッドの名前(名前の部分文字列ではない)と一致する正規表現。メソッド名に特殊文字が含まれている場合は、バックスラッシュ\シンボルでエスケープする必要があることに注意してください。例: MyMethod\+MySubMethod

    • PrintCallstacks - コールスタックデータをレポートに含めることを許可するオプションの属性(そのようなレポートの例を以下に示します )。 PrintCallstacksに使用できる値は2つあります。

      • Full - 完全修飾メソッド名はコールスタックに表示されます。

      • MethodNameOnly - メソッド名のみ(名前空間とクラス名を除く)が呼び出しスタックに表示されます。

  3. ファイルを保管します。

2a: 掲載結果レポートの作成

パフォーマンスレポートを生成するには

  • コマンドラインで次のコマンドを実行します。

    Reporter.exe report <path_to_snapshot> --pattern=<path_to_pattern> --save-to=<path_to_report>
    どこで
    <path_to_snapshot> - ソーススナップショットファイルへのパス。
    <path_to_pattern> - レポートに追加されたメソッドの名前を含むXMLパターンファイルへのパス。
    <path_to_report> - 結果のレポートファイルへのパス。

例:

Reporter.exe report c:\Snapshots\snapshot.dtp --pattern=pattern.xml --save-to=c:\Reports\report.xml

レポートの例

<Report> <Info> <Snapshot IndexFile="C:\snapshot1.dtp" Executable="C:\Temp\ConsoleAppTest.exe" CommandLine="C:\Temp\ConsoleAppTest.exe" /> </Info> <Function FQN="Tests.Method1" TotalTime="500" OwnTime="100" Calls="1" /> <Function FQN="Tests.Method2" TotalTime="400" OwnTime="200" Calls="10" /> </Report>

どこで
FQN - 完全なメソッド名。
TotalTime - メソッドの呼び出しサブツリーの実行時間。
OwnTime - メソッド自身の実行時間。
Calls - コール数。

XMLパターンファイル内の特定の Pattern に対して PrintCallstacks 属性が指定されている場合、レポートには追加の呼び出しスタックデータが含まれます。ex:一部の GetFileNames 関数に <Pattern PrintCallstacks = "MethodNameOnly"> が指定されました。この場合、結果のレポートの対応する Function ノードには、呼び出しスタックを持つ追加の Instance サブノードが含まれます。

<Function Id="0x0020000C" FQN="MyApplication.MainWindow.GetFileNames" TotalTime="12520" OwnTime="0" Calls="1740" Instances="1"> <Instance CallStack="Main/Run/Run/RunInternal/RunDispatcher/PushFrame/PushFrameImpl/OnClick/RaiseEvent/RaiseEventImpl/InvokeHandlersImpl/InvokeHandler/btnSelectFiles_Click/GetFileNames" TotalTime="12520" OwnTime="0" Calls="1740" /> </Function>

2b: スナップショットの違いに関するレポートの生成

2つのスナップショットを比較し、相違点に関するレポートを生成するには

  • コマンドラインで次のコマンドを実行します。

    Reporter.exe compare <path_to_snapshot1> <path_to_snapshot2> --pattern=<path_to_pattern> --save-to=<path_to_report>
    どこで
    <path_to_snapshot1> - 参照スナップショットファイルへのパス。
    <path_to_snapshot2> - 2番目のスナップショットファイルへのパス。
    <path_to_pattern> - レポートに追加されたメソッドの名前を含むXMLパターンファイルへのパス。
    <path_to_report> - 結果レポートファイルへのパス。

例:

Reporter.exe compare c:\Snapshots\base_snapshot.dtp c:\Snapshots\snapshot.dtp --pattern=pattern.xml --save-to=c:\Reports\report.xml

結果レポートファイルは、「レポート」モードで得られるものと似ていますが、唯一の違いはすべてのフィールドに絶対時間やコール数の数ではなくスナップショット間のデルタが含まれることです。デルタ記号に応じて、値は + または - の接頭辞で始まります。

最終更新日: 2019年8月8日

関連事項