Windows Performance Analyzer无法解析C#应用程序符号求助
求助:WPA无法加载自定义ETW应用程序的符号
各位好,我最近在做一个简单的ETW测试时,碰到了WPA(Windows Performance Analyzer)无法加载自定义应用程序符号的问题,折腾了好久没解决,想请大家帮忙看看。
先说说我的环境:
- 操作系统:Windows Server 2012 R2(也试过Windows 10)
- WPRUI/WPA版本:10.0.16299.91
- Visual Studio Community 2017版本:15.6.6
- .NET版本:4.7
我的测试场景很简单:
- 写了一个C#控制台应用程序(叫TestEtw,二进制是TestEtw.exe)
- 用WPRUI生成了对应的ETL跟踪文件
- WPRUI还输出了NGENPDB文件
- 同时也生成了TestEtw的Symcache文件,文件名是
TestEtw.exe-f5dfdbac20df4e29879d1c9abbd2cda61v2.symcache - 符号路径我配置的是:
_NT_SYMBOL_PATH=c:\MySyms;srv*C:\Symbols*http://msdl.microsoft.com/download/symbols- 我已经把项目bin目录里的TestEtw.pdb复制到了
c:\MySyms目录下
- 我已经把项目bin目录里的TestEtw.pdb复制到了
- 但当我在WPA里加载ETL文件,点击「加载符号」后,发现TestEtw.exe的符号始终加载不出来,界面上还是显示未解析的状态
这是WPA里的截图:
我已经尝试了这些方法排查:
- 用symchk工具验证符号的可用性:
执行命令:symchk c:\Users\Administrator\source\repos\TestEtw\TestEtw\bin\Debug\TestEtw.exe /v
结果显示symchk成功在c:\MySyms\TestEtw.pdb找到了匹配的符号 - 检查symcache目录:
c:\symcache里确实有对应的symcache文件,文件名里的签名和PDB完全匹配 - 换了旧版本的WPA(6.3.9600.16384,winblue_rtm版本),问题还是一样
- 用Process Monitor监控WPA的行为,发现它确实已经打开了TestEtw的symcache文件
现在我就很困惑:symchk能找到PDB,WPA也加载了symcache,但就是不显示符号。有没有大佬遇到过类似的问题?求指点,谢谢!
内容的提问来源于stack exchange,提问作者BustaH
相关产品推荐
相关产品推荐

