VSPerf VS2010和其他分析工具没有拿起pdb

时间:2012-10-12 08:13:36

标签: c++ visual-studio-2010 profiler vtune vsperfmon

尝试使用VSPerfCmd(VS2010探查器)以及英特尔VTune Amplifier XE 2013进行分析:对于.vsp文件中的VsPerfCmd,可以获得一些结果。然而,profier并没有拿起pdb。没有代码可用于应用程序的某些部分。

这是否已经发生在您身上,您是否知道是否应该启用某些编译器选项以获得完整的配置文件?

分析器在哪个目录中查找.pdb信息?

感谢

1 个答案:

答案 0 :(得分:1)

Windows上的分析器和调试器默认按可执行文件中写入的路径查找PDB文件。所以要做的第一件事就是在某个十六进制编辑器中打开可执行文件并搜索“.pdb”字符串并检查磁盘上是否存在提到的文件。如果不是这种情况,请检查是否为编译器指定了/ Zi或/ ZI选项,并为链接器指定了/ debug选项。

如果应用程序的某些部分缺少符号名称,请检查这些部分是单独的动态库还是静态库,以及是否为这些库生成调试信息。在静态库的情况下,很容易沿着链接方式丢失调试信息,因为默认情况下/ Zi标志将调试信息嵌入到vc * .pdb文件中(例如VS 2008的vc90.pdb),并且该文件通常不会导出通过构建系统进入SDK。对于静态库,我个人发现使用/ Z7选项进行调试信息的工具最有用,因为它将它嵌入到目标文件本身,然后嵌入到* .lib文件中,然后传播到最终的* .exe / * .dll二进制文件的PDB文件。