如何让Very Sleepy探测器识别C ++二进制文件中的函数名?

时间:2011-12-21 15:20:20

标签: c++ visual-studio profiling verysleepy

我有一个混合使用Visual Studio 2010构建的C#/托管C ++ /非托管C ++的工具。代码实际上分布在.exe(我称之为mybinary.exe)和.dll(mylib.dll。 )

我在项目中为dll和exe设置了构建设置,以便在发布版本中生成PDB文件。我已经确定PDB文件都在exe和pdb所在的目录中。但是当我调试这个程序时,我仍然看不到函数的名称;我只看到地址。这是我在Very Sleepy的第一个屏幕中选择程序时在底部的小状态栏中获得的相关摘录:

DBGHELP: mybinary.vshost - public symbols  
         C:\Users\(me)\AppData\Local\sleepy\vshost32-clr2.pdb\(long hex string)\vshost32-clr2.pdb
...
DBGHELP: No debug info for C:\myproj\mylib.dll.  Searching for dbg file
DBGHELP: C:\myproj\mylib.dbg - file not found
DBGHELP: C:\myproj\dll\mylib.dbg - path not found
DBGHELP: C:\myproj\symbols\dll\mylib.dbg - path not found
SYMSRV:  C:\Users\peastlund\AppData\Local\sleepy\mylib.dbg\4EF1F48B13c000\mylib.dbg not found
DBGHELP: C:\myproj\mylib.dbg - file not found
DBGHELP: C:\myproj\dll\mylib.dbg - path not found
DBGHELP: C:\myproj\symbols\dll\mylib.dbg - path not found
DBGHELP: C:\myproj\mylib.dbg - file not found
DBGHELP: C:\myproj\mylib.dll missing debug info.  Searching for pdb anyway
DBGHELP: mylib - public symbols  
         C:\myproj\mylib.pdb - unmatched
...
DBGHELP: MOD: mybinary.vshost
...
DBGHELP: mybinary - private symbols & lines 
         C:\myproj\mybinary.pdb

所以看起来有一个问题是将mylib.pdb与mylib.dll匹配,由于某些原因我不清楚,但我会注意到我没有得到来自mybinary.exe的函数的正确地址。我有一台全新安装的新计算机,所以这不是“某些库已经过时”的问题。

非常感谢任何人都可以提供帮助!

编辑:事实上,事实证明这并非特定于优化代码。其他分析器在优化C ++方面存在一些问题,这就是为什么我切换到Very Sleepy,但是在测试中我现在意识到使用Very Sleepy我似乎无法获得函数名称,即使我在调试模式下编译也是如此。

1 个答案:

答案 0 :(得分:0)

确保以下内容:

  1. 您已将符号搜索路径(工具 - >选项)设置为本地路径
  2. 首先启动您的应用程序,然后启动困和简介
  3. 在应用程序终止前停止分析