xperf无法加载我的DLL的符号 [英] xperf can't load my DLL's symbols

查看:236
本文介绍了xperf无法加载我的DLL的符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用xperf来分析我的DLL,但它拒绝使用我的DLL的PDB文件. 使用-symbols在.etl上运行xperf,我得到:

I'm trying to use xperf to profile my DLL, but it refuses to use my DLL's PDB file. Running xperf on the .etl with -symbols, I get:

DBGHELP: mydll- private symbols & lines
         C:\mydll\debugu\mydll.pdb - unmatched

这使我相信它认为我的PDB与应用程序正在使用的DLL不匹配.这是错误的;它确实匹配.我已经确认应用程序使用procexp链接的DLL的路径,完全重建了项目,依此类推.仍然认为它不匹配.

Which leads me to believe it thinks my PDB doesn't match the DLL the application is using. This is wrong; it does match. I've confirmed the path of the DLL the application is linking with using procexp, completely rebuilt the project, and so on. It still thinks it doesn't match.

关于可能出什么问题的任何想法吗?

Any ideas on what could be wrong?

推荐答案

对不起,我问了这个问题,却忘了它.

Sorry, I asked this question and forgot about it.

实际上有两个问题.

第一个是xperf实际上使用的是我的符号的较旧的缓存版本.通过从符号缓存中删除它可以解决此问题.

The first is that xperf was actually using an older cached version of my symbols. This was fixed by deleting it from the symbol cache.

第二个是,当我在xperfview中加载符号时,实际上并没有将最新的pdb放入符号缓存中. pdb在我确认包含在_NT_SYMBOL_PATH变量中的目录中.不幸的是,我不记得用于解决此问题的确切命令,但我相信它是一个' xperf file.etl -symbols '变体.此命令正确地解析了etl并在遇到它们时将所有相关符号加载/缓存.之后,xperfview可以正确显示我的符号.

The second was that when I loaded symbols in xperfview, it didn't actually put my up-to-date pdb into the symbols cache. The pdb was in a directory that I confirmed was included in the _NT_SYMBOL_PATH variable, however. Unfortunately, I don't remember the exact command used to fix this, but I believe it was an 'xperf file.etl -symbols' variant. This command correctly parsed the etl and loaded/cached all of the relevant symbols as it encountered them. After this, xperfview could correctly show my symbols.

请注意,无论何时我的pdb更改,我都必须重新运行该命令,因为xperfview仍然不会触摸符号缓存中尚未存在的任何内容.我仍然不确定为什么它会在我的计算机上以这种方式运行,其他人似乎没有这个问题.

Note that I had to re-run the command any time my pdb changed, because xperfview still wouldn't touch anything that wasn't already in the symbol cache. I'm still not sure why it behaves this way on my machine, other people don't seem to have this problem.

这篇关于xperf无法加载我的DLL的符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆