我一直在用 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 正在 Release模式下编译(优化),但我专门设置 Visual Studio 项目来创建 pdb,我已经验证 pdb 存在并且它位于我的 _NT_SYMBOL_PATH 上的目录中。有谁知道我该如何解决这个问题,或者至少进一步调试它?
最佳答案
您可以 set some environment variables在符号加载期间启用诊断日志记录:
- DBGHELP_DBGOUT = 1
- DBGHELP_LOG = C:\dbghelp.log
关于windows - 无法让 xperfview 加载 DLL 的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596687/