我一直在使用 xperf 来获取我正在分析的工具的符号。我在该工具中运行的代码在 .exe 和 .dll 之间进行了拆分——要分析的重要内容位于 .dll 中。我跑了 xperf:
xperf -on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE -stackwalk profile
然后我运行了我的工具一会儿,然后
xperf -d profile.etl
然后我尝试了 xperfview。我加载了配置文件,打开了“加载符号”,然后打开了汇总表。根本没有符号——从字面上看,模块在函数列中出现了“未知”。我已经搜索了其他线程,这就是我尝试过的:
- 我设置了我的环境变量 _NT_SYMBOL_PATH 和 _NT_SYMCACHE
- 我清除了我的符号缓存并运行 xperf -symbols -i profile_results.etl。
- 我从最新版本的 Windows 调试工具中复制了 dbghelp.dll 并重复了上述操作。
完成所有这些操作后,我现在可以为大多数不是我自己的代码的模块正确显示函数名称,但我无法显示我的 dll。dll 正在发布模式下编译(经过优化),但我将 Visual Studio 项目专门设置为创建 pdb,我已验证 pdb 存在并且它位于我的 _NT_SYMBOL_PATH 上的目录中。有谁知道我该如何解决这个问题,或者至少进一步调试它?