サードパーティツールを dotMemory と統合する
JetBrains .NET ツール (dotTrace、dotCover、dotMemory) は、共通のプロファイラーコアに基づいています。このコアは、プロファイリングされたプロセスへのアタッチ、.NET フレームワーク、.NET Core、または .NET ランタイムとの通信、プロファイリングデータの収集などの低レベルのプロファイリング機能を提供します。
プロファイラーコアは、サードパーティツールを JetBrains .NET ツールと統合できるメカニズムを提供します。このような統合の例としては、JetBrains dotTrace とともに実行される Typemock Isolator があります。ユーザーはコードをテストするだけでなく、パフォーマンスの問題を調査することもできます。
透過的な統合の概念
JetBrains .NET ツールは、プロセスをプロファイリングするときに、プロファイラーコアをプロファイリングされたプロセスにロードします。透過的な統合の場合、プロファイリングはサードパーティツールによって開始されます。サードパーティツールは、プロファイラーコアをプロファイリングされたプロセスにロードする責任を負います。
ツールを dotMemory と統合する方法
プロファイリングを開始する前に、ツールは次の場所の少なくとも 1 つで統合構成を提供する必要があります。
Linus と macOS の場合:
ファイル
$HOME/.jetbrains-profiler-transparent-integration-config
Windows の場合:
レジストリ
HKCU\SOFTWARE\JetBrains\Profiler\TransparentIntegrationレジストリ
HKLM\SOFTWARE\JetBrains\Profiler\TransparentIntegrationレジストリ
HKLM\SOFTWARE\WOW6432Node\JetBrains\Profiler\TransparentIntegrationファイル
%USERPROFILE%\.jetbrains-profiler-transparent-integration-config
構成ファイルには、キーと値のペアのリストが含まれています。1 行に使用できるキーと値のペアは 1 つだけです。キーと値は
=で区切る必要があります。パーサーは、行上の#シンボルに続くテキストを無視します。空行は無視されます。キー名
Windows レジストリのデータ型
説明
{name}REG_SZ(必須) サードパーティプロファイラー COM オブジェクトのクラス ID。
{name}_Path32REG_SZ(Windows ARM64/x64/x86 では必須) x86 サードパーティプロファイラー共有ライブラリへの絶対パス。
{name}_Path64REG_SZ(Linux x64、macOS ARM64/x64、Windows ARM64/x64 で必須) x64 サードパーティプロファイラー共有ライブラリへの絶対パス。
{name}_PathArm32(Linux ARM では必須) ARM サードパーティプロファイラー共有ライブラリへの絶対パス。
{name}_PathArm64REG_SZ(Linux ARM64、macOS ARM64、Windows ARM64 で必須) ARM64 サードパーティプロファイラー共有ライブラリへの絶対パス。
{name}_RegistryFreeActivationREG_DWORD(オプション、Windows のみ) デフォルトでは
0ステップ 2 をスキップする場合、つまり .NET フレームワーク 2.0 - 4.5.2 プロセスのプロファイリングを行わない場合は、0以外の任意の数値を指定します。ツールがプロファイリングするプロセスを開始する場合は、以下の各
{name}に対応するレジストリ値を作成します。MemoryProfiler
ツールがプロファイリングする実行中のプロセスにアタッチする場合は、以下の各
{name}に対応するレジストリ値を作成します。MemoryProfiler_Attach
Win32 API または x86 および x64 の
regsvr32を使用して、ツールを COM オブジェクトとして登録します (ARM64 CPU は .NET フレームワーク 2.0 - 4.5.2 をサポートしません)。JetBrains プロファイラーコアをプロファイリングされたプロセスにロードするには、次のデータを使用します。
変数
Windows レジストリのデータ型
説明
JETBRAINS_PROFILER_CORE_GUIDREG_SZ(必須) プロファイラーコア GUID。
JETBRAINS_PROFILER_CORE_PATH32REG_SZ(Windows ARM64/x64/x86 では必須) x86 プロファイラーコア共有ライブラリへの絶対パス。
JETBRAINS_PROFILER_CORE_PATH64REG_SZ(Linux x64、macOS ARM64/x64、Windows ARM64/x64 で必須) x64 プロファイラーコア共有ライブラリへの絶対パス。
JETBRAINS_PROFILER_CORE_PATH_ARM32REG_SZ(Linux ARM では必須) ARM プロファイラーコア共有ライブラリへの絶対パス。
JETBRAINS_PROFILER_CORE_PATH_ARM64REG_SZ(Linux ARM64、macOS ARM64、Windows ARM64 で必須) ARM64 プロファイラーコア共有ライブラリへの絶対パス。
これらの変数の値は、次のソースから取得する必要があります(必要な値が見つかるまで、指定された順序でソースを正確に検索してください)。
Linus と macOS の場合:
ファイル:
/tmp/Upid_<pid>_<pst>/<var>環境変数
Windows の場合:
レジストリ:
HKCU\SOFTWARE\JetBrains\Profiler\Upid_<pid>_<pst>レジストリ:
HKLM\SOFTWARE\JetBrains\Profiler\Upid_<pid>_<pst>環境変数
レジストリ:
HKLM\SOFTWARE\JetBrains\Profiler\Global
説明:
<var>– 上の表の変数。<pid>– 符号なし 10 進プロセス ID。<pst>– 16 進数のプロセス開始時刻:Linux の場合: システム起動からのクロック刻み。
Windows および macOS の場合: 1601 年 1 月 1 日 (UTC) から 100 ナノ秒間隔。
ツールが
ICorProfilerInfo*インターフェースの変換を実装し、最新の状態に維持していることを確認してください。ツールでのICorProfilerInfo::QueryInterface()の実装は、サポートする CLR/CoreCLR バージョンと同じ使用可能なインターフェースのセットを返す必要があることに注意してください。例: CoreCLR がICorProfilerInfo~ICorProfilerInfo4のみをサポートする場合、JetBrains プロファイラーコアはこれらのインターフェースのみを使用できる必要があります。