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