dotMemory 2025.2 Help

将第三方工具与 dotMemory 集成

JetBrains .NET 工具(dotTrace、dotCover 和 dotMemory)基于通用的分析器核心。 该核心提供了低级分析功能,例如附加到被分析的进程,与 .NET Framework、.NET Core 或 .NET 运行时通信,收集分析数据等。

分析器核心提供了一种机制,使第三方工具能够与 JetBrains .NET 工具集成。 这种集成的一个示例是 Typemock Isolator 与 JetBrains dotTrace 一起运行:用户不仅可以测试其代码,还可以调查性能问题。

透明集成概念

当 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

    配置文件包含键值对的列表。 每行只允许一个键值对。 键和值必须用 = 分隔。 解析器会忽略行中 # 符号之后的任何文本。 空行会被忽略。

    键名

    Windows 注册表数据类型

    描述

    {name}

    REG_SZ

    (必需)第三方分析器 COM 对象的类 ID。

    {name}_Path32

    REG_SZ

    (Windows ARM64/x64/x86 上必需)x86 第三方分析器共享库的绝对路径。

    {name}_Path64

    REG_SZ

    (Linux x64、macOS ARM64/x64、Windows ARM64/x64 上必需)x64 第三方分析器共享库的绝对路径。

    {name}_PathArm32

    (Linux ARM 上必需)ARM 第三方分析器共享库的绝对路径。

    {name}_PathArm64

    REG_SZ

    (Linux ARM64、macOS ARM64、Windows ARM64 上必需)ARM64 第三方分析器共享库的绝对路径。

    {name}_RegistryFreeActivation

    REG_DWORD

    (可选,仅限 Windows)默认值为 0。 如果您打算跳过 步骤 2 ,即不分析 .NET Framework 2.0 - 4.5.2 进程,请指定除 0 以外的任何数字。

    如果您的工具启动了一个将被分析的进程,请为以下每个 {name} 创建相应的注册表值:

    • MemoryProfiler

    如果您的工具附加到一个正在运行的将被分析的进程,请为以下每个 {name} 创建相应的注册表值:

    • MemoryProfiler_Attach

  2. 使用 Win32 API 或 regsvr32 将您的工具注册为 COM 对象以支持 x86 和 x64(ARM64 CPU 不支持 .NET Framework 2.0 - 4.5.2)。

  3. 要将 JetBrains 分析器核心加载到被分析的进程中,请使用以下数据:

    变量

    Windows 注册表数据类型

    描述

    JETBRAINS_PROFILER_CORE_GUID

    REG_SZ

    (必需)分析器核心 GUID。

    JETBRAINS_PROFILER_CORE_PATH32

    REG_SZ

    (Windows ARM64/x64/x86 上必需)x86 分析器核心共享库的绝对路径。

    JETBRAINS_PROFILER_CORE_PATH64

    REG_SZ

    (Linux x64、macOS ARM64/x64、Windows ARM64/x64 上必需)x64 分析器核心共享库的绝对路径。

    JETBRAINS_PROFILER_CORE_PATH_ARM32

    REG_SZ

    (Linux ARM 上必需)ARM 分析器核心共享库的绝对路径。

    JETBRAINS_PROFILER_CORE_PATH_ARM64

    REG_SZ

    (Linux ARM64、macOS ARM64、Windows ARM64 上必需)ARM64 分析器核心共享库的绝对路径。

    您必须从以下来源获取这些变量的值(按照指定顺序精确搜索来源,直到找到所需值):

    1. 在 Linus 和 macOS 上:

      1. 文件: /tmp/Upid_<pid>_<pst>/<var>

      2. 环境变量

    2. 在 Windows 上:

      1. 注册表: HKCU\SOFTWARE\JetBrains\Profiler\Upid_<pid>_<pst>

      2. 注册表: HKLM\SOFTWARE\JetBrains\Profiler\Upid_<pid>_<pst>

      3. 环境变量

      4. 注册表: HKLM\SOFTWARE\JetBrains\Profiler\Global

    Where:

    • <var> – 表中上述的 变量

    • <pid> – 一个无符号十进制进程 ID。

    • <pst> – 一个十六进制进程启动时间:

      • 在 Linux 上:从系统启动以来的时钟周期数。

      • 在 Windows 和 macOS 上:自 1601 年 1 月 1 日(UTC)以来的 100 纳秒间隔。

  4. 确保您的工具实现并保持 ICorProfilerInfo* 接口的翻译为最新。 请注意,您的工具中 ICorProfilerInfo::QueryInterface() 的实现必须返回与其支持的 CLR/CoreCLR 版本相同的一组可用接口。 例如,如果 CoreCLR 仅支持 ICorProfilerInfoICorProfilerInfo4 ,那么 JetBrains 分析器核心只能使用这些接口。

最后修改日期: 2025年 9月 27日