VSPerf VS2010 和其他分析工具没有拾取 pdb
Posted
技术标签:
【中文标题】VSPerf VS2010 和其他分析工具没有拾取 pdb【英文标题】:VSPerf VS2010 and other profiling tools not picking up pdb 【发布时间】:2012-10-12 08:13:35 【问题描述】:尝试使用 VSPerfCmd(VS2010 分析器)以及英特尔 VTune Amplifier XE 2013 进行分析:对于 .vsp 文件中的 VsPerfCmd,可以获得一些结果。但是,profer 没有选择 pdb。应用程序的某些部分没有可用的代码。
您是否已经遇到过这种情况,您是否知道是否应该打开某些编译器选项以获得完整的配置文件?
分析器在哪个目录中查找 .pdb 信息?
谢谢
【问题讨论】:
【参考方案1】:默认情况下,Windows 上的分析器和调试器通过写入可执行文件的路径查找 PDB 文件。所以要做的第一件事是在一些十六进制编辑器中打开可执行文件并搜索“.pdb”字符串并检查磁盘上是否存在提到的文件。如果不是这种情况,请检查您是否为编译器指定了 /Zi 或 /ZI 选项,并为链接器指定了 /debug 选项。
如果应用程序的某些部分缺少符号名称,请检查这些部分是单独的动态库还是静态库,以及您是否为它们生成调试信息。在静态库的情况下,很容易在链接过程中丢失调试信息,因为默认情况下 /Zi 标志将调试信息嵌入到 vc*.pdb 文件中(例如 VS 2008 的 vc90.pdb)并且该文件通常不会导出通过构建系统进入 SDK。对于静态库,我个人认为使用 /Z7 选项获取调试信息最有用,因为它将其嵌入到目标文件本身,然后嵌入到 *.lib 文件中,然后传播到最终的 *.exe / *.dll 二进制文件的 PDB文件。
【讨论】:
以上是关于VSPerf VS2010 和其他分析工具没有拾取 pdb的主要内容,如果未能解决你的问题,请参考以下文章