操作系统:Windows Server 2012 R2(也尝试过 Windows 10)
WPRUI/WPA 版本:10.0.16299.91
Visual Studio Community 2017 版本:15.6.6
.NET 版本:4.7
对于我认为非常简单的场景,我无法在 WPA 中加载符号。
- C# 控制台应用程序(称为 TestEtw - 二进制文件是 TestEtw.exe)
- ETL 文件
- NGENPDB 文件(由 WPRUI 输出)
- testetw 的 Symcache 文件 ( TestEtw.exe-f5dfdbac20df4e29879d1c9abbd2cda61v2.symcache )
_NT_SYMBOL_PATH=c:\MySyms;srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
- PDB 在项目的 bin 目录中,我在其中复制了一份
c:\MySyms
- PDB 在项目的 bin 目录中,我在其中复制了一份
- 在 WPA 中加载 ETL 文件并单击加载符号。您会发现 wpa 不会为 TestEtw.exe(前面提到的 C# 控制台应用程序)加载符号
我尝试了很多事情:
- 验证 symchk 可以通过运行找到符号:
symchk c:\Users\Administrator\source\repos\TestEtw\TestEtw\bin\Debug\TestEtw.exe /v
- 它在 c:\MySyms\TestEtw.pdb 中找到符号
- 已验证
c:\symcache
实际包含一个 testetw 文件,并且其名称与 PDB 签名匹配:TestEtw.exe-f5dfdbac20df4e29879d1c9abbd2cda61v2.symcache
- 旧版本的 WPA(6.3.9600.16384 - 这是 winblue_rtm 版本)也不会加载这些符号
- 通过 Process Monitor 确认 WPA 确实为 TestEtw 打开了 symcache 文件。
因此,似乎 symcheck 可以找到 pdb,wpa 正在填充 symcache 甚至加载 symcache 文件,但 WPA UI 没有在 TestEtw 中显示符号。
任何帮助将不胜感激。谢谢!