Visual Studio 2015调用堆栈显示<unknown function =“”>

时间:2016-06-21 16:59:20

标签: c++ visual-studio debugging

最近在我的计算机上干净安装Windows 10 Pro之后,我注意到每当我打破程序并打开调用堆栈时,调用堆栈会显示应用程序名称和行号,但函数名称显示为{ {1}}。调用堆栈可以照常导航,但缺少的函数名称非常烦人。

我尝试了以下内容:

  • 确保我正在运行带有完整符号生成的调试版本
  • 确认已加载所有相关的调试符号
  • 尝试完全重新安装Visual Studio(3次)
  • 将我的所有Visual Studio设置重置为默认设置
  • 删除/清除构建和用户特定的文件
  • 确保我的Visual Studio是最新的(版本14.0.25123.00更新2)

甚至从默认模板创建一个新的Win32 C ++控制台应用程序,并打破调用堆栈中的<Unknown function>return 0;

例:
Example

如何让调用堆栈显示正确的函数名?

2 个答案:

答案 0 :(得分:2)

此错误消息表示调试器的组件格式化C ++堆栈帧的文本失败。我已经看到当安装程序使Visual Studio与二进制文件不匹配时会发生这种情况。以下是我要尝试的事情:

  1. 首先通过devenv.exe /safemode C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger安全模式运行VS,确保这不是由错误的扩展引起的。

  2. 卸载任何VS扩展,然后卸载VS并确保从depends.exe删除所有文件(如果您在其他地方安装了VS,可能需要更改路径),然后尝试重新安装。

  3. 如果这样做无法修复,那么您的Windows安装可能会出现问题。您可以尝试在cppdebug.dll上运行let loginVC = storyboard.instantiateViewControllerWithIdentifier(kMyViewControllerId) as! MyViewController self.presentViewController(loginVC, animated: true, completion: nil) ,看看是否可以确定缺少哪个依赖项。

答案 1 :(得分:0)

帕特里克怀疑,问题原来是cppdebug.dll遗失的cppdebug.vsdconfigCommon7\Packages\Debugger。不幸的是,Visual Studio没有表明它们是一个问题,重新安装或修复安装也没有帮助。幸运的是,我能够通过其他方式获得这些文件 放置等效于Visual Studio版本的文件可以解决问题。

对于不同的Visual Studio版本,

cppdebug.dllcppdebug.vsdconfig