5

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

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

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 我似乎也无法获得函数名称。

4

1 回答 1

0

确保以下内容:

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