如何让Very Sleepy分析器识别c++二进制文件中的函数名?

How can I get Very Sleepy profiler to recognize function names in C++ binary?

本文关键字:二进制文件 函数 c++ 识别 Very Sleepy 分析器      更新时间:2023-10-16

我有一个用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)AppDataLocalsleepyvshost32-clr2.pdb(long hex string)vshost32-clr2.pdb
...
DBGHELP: No debug info for C:myprojmylib.dll.  Searching for dbg file
DBGHELP: C:myprojmylib.dbg - file not found
DBGHELP: C:myprojdllmylib.dbg - path not found
DBGHELP: C:myprojsymbolsdllmylib.dbg - path not found
SYMSRV:  C:UserspeastlundAppDataLocalsleepymylib.dbg4EF1F48B13c000mylib.dbg not found
DBGHELP: C:myprojmylib.dbg - file not found
DBGHELP: C:myprojdllmylib.dbg - path not found
DBGHELP: C:myprojsymbolsdllmylib.dbg - path not found
DBGHELP: C:myprojmylib.dbg - file not found
DBGHELP: C:myprojmylib.dll missing debug info.  Searching for pdb anyway
DBGHELP: mylib - public symbols  
         C:myprojmylib.pdb - unmatched
...
DBGHELP: MOD: mybinary.vshost
...
DBGHELP: mybinary - private symbols & lines 
         C:myprojmybinary.pdb

所以看起来匹配mylib有问题。pdb到mylib.dll,由于某种原因我不清楚,但我要注意的是,我也没有得到来自mybinary.exe的函数的适当地址。我有一台最新安装的新电脑,所以这不是"某些库过时了"的问题。

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

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

确保以下内容:

  1. 你已经将符号搜索路径(工具->选项)设置为本地路径
  2. 首先启动应用程序,然后启动休眠和配置文件
  3. 在应用程序终止前停止分析