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

Pau*_*und 5 c++ profiling verysleepy visual-studio

我有一个混合使用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
Run Code Online (Sandbox Code Playgroud)

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

非常感谢,如果有人可以帮助这个!

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

zeu*_*us2 0

确保以下几点:

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