Windows 性能分析器 (WPA) 无法解析我的 C# 应用程序的符号

问题描述 投票:0回答:1

操作系统:Windows Server 2012 R2(也尝试过 Windows 10)

WPRUI/WPA版本:10.0.16299.91

Visual Studio 社区 2017 版本:15.6.6

.NET版本:4.7

对于我认为非常简单的场景,我在 WPA 中加载符号时遇到问题。

  1. C# 控制台应用程序(称为 TestEtw - 二进制文件为 TestEtw.exe)
  2. ETL 文件
  3. NGENPDB 文件(由 WPRUI 输出)
  4. testetw 的 Symcache 文件(TestEtw.exe-f5dfdbac20df4e29879d1c9abbd2cda61v2.symcache
  5. _NT_SYMBOL_PATH=c:\MySyms;srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
    1. PDB在项目的bin目录下,我在
      c:\MySyms
    2. 复制了一份
  6. 在 WPA 中加载 ETL 文件并单击加载符号。 您会发现 wpa 不会加载 TestEtw.exe(前面提到的 C# 控制台应用程序)的符号

enter image description here

我尝试了很多事情:

  1. 验证 symchk 可以通过运行找到符号:
    symchk c:\Users\Administrator\source\repos\TestEtw\TestEtw\bin\Debug\TestEtw.exe /v
    1. 它在 c:\MySyms\TestEtw.pdb 中找到符号
  2. 验证
    c:\symcache
    实际上包含一个testetw文件并且其名称与PDB签名匹配:
    TestEtw.exe-f5dfdbac20df4e29879d1c9abbd2cda61v2.symcache
  3. 旧版本的 WPA(6.3.9600.16384 - 这是 winblue_rtm 版本)也不会加载这些符号
  4. 通过 Process Monitor 确认 WPA 确实打开了 TestEtw 的符号缓存文件。

因此,看起来 symcheck 可以找到 pdb,wpa 正在填充 symcache,甚至加载 symcache 文件,但 WPA UI 没有在 TestEtw 中显示符号。

任何帮助将不胜感激。 谢谢!

debug-symbols etw windows-performance-analyzer wpr
1个回答
0
投票

就我而言,WPA 在一台机器上被捕获。为了在另一台计算机上加载 etl 文件,我将符号文件复制到其本地文件夹

C:\Users\elabstudent\Downloads\symbols\
并尝试加载。当指定路径后符号仍未解析时,我检查了
Symbols Hub
内的输出并过滤了感兴趣的模块。这就是它所显示的:

Symbols Hub

WPA 查找的文件夹路径是

C:\Users\elabstudent\Downloads\symbols\rbtnfd64.pdb\rbtlogger.pdb\AA103FB55629480789185C4744E62E231
,与我配置的不同。因此,我手动创建文件夹并将符号文件放置在那里(不对配置的符号路径进行任何更改)。

当我尝试重新加载时,这次加载正常,如下截图所示:

Symbols Hub

这导致符号在分析中得到解决。

© www.soinside.com 2019 - 2024. All rights reserved.