You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core集成测试性能分析问题:无法采集测试代码数据

解决.NET集成测试性能分析无法采集业务代码数据的问题

一、确保符号文件(PDB)正确生成

符号文件是性能分析工具识别业务代码的核心,必须保证测试和业务项目生成完整的PDB:

  • 打开业务项目和测试项目的.csproj文件,添加或修改以下配置:
    <PropertyGroup>
      <!-- Debug模式默认生成完整PDB,Release模式需显式指定 -->
      <DebugType>portable</DebugType>
      <DebugSymbols>true</DebugSymbols>
      <!-- Release模式下如果需要分析,可临时关闭优化避免调用栈丢失 -->
      <Optimize>false</Optimize>
    </PropertyGroup>
    
  • 用Debug模式重新构建整个解决方案:
    dotnet clean && dotnet build Solution.sln -c Debug
    

二、调整dotnet-trace命令,追踪子进程

dotnet test会启动独立的测试宿主进程(testhost.exe),默认的dotnet-trace只会追踪父dotnet进程,需开启子进程追踪:

  • 使用以下命令采集数据:
    dotnet-trace collect --collector-option IncludeChildProcesses=true --providers Microsoft-DotNETCore-SampleProfiler -- dotnet test Solution.sln -c Debug
    
    • IncludeChildProcesses=true:确保追踪测试宿主子进程
    • Microsoft-DotNETCore-SampleProfiler:指定托管代码分析提供者,保证采集业务代码调用栈

三、JetBrains dotTrace的正确配置

方式1:通过dotTrace直接启动测试

  • 打开dotTrace,选择Run Configuration → 添加** .NET Test**配置
  • 指定解决方案路径(Solution.sln),选择Debug配置
  • 点击Run with Profiling,dotTrace会自动追踪所有测试相关进程,包括业务代码所在进程

方式2:附加到测试宿主进程

  • 先手动启动测试:dotnet test Solution.sln -c Debug
  • 在dotTrace的Attach to Process界面,找到名为testhost.exe(或testhost.x86.exe)的进程,附加到该进程开始分析
  • 注意:不要附加到父dotnet.exe进程,否则无法采集业务代码数据

四、额外排查点

  • 确认测试项目是项目引用业务项目,而非引用NuGet包:如果用NuGet包,符号文件可能不匹配或缺失
  • 避免使用--no-build参数:确保每次分析前都重新构建,保证二进制和PDB文件一致

内容的提问来源于stack exchange,提问作者Karel Frajták

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:42:44