【问题标题】:Visual Studio Code not loading symbols on OS XVisual Studio Code 未在 OS X 上加载符号
【发布时间】:2016-07-13 11:16:43
【问题描述】:

我正在尝试在 OS X 上使用 ASP.NET Core 设置 Web api。我已经正确设置了我的环境(我认为),并且我能够从终端使用 dotnet build 构建和运行我的应用程序,并且我能够从 Visual Studio Code 开始调试,断点按预期工作。我的问题是尝试使用 EF 核心查询我的 Sqlite 数据库时收到错误消息。 EF 核心在这里并不重要,因为当我调试并试图找出错误是什么时,我没有得到任何堆栈跟踪。当我跳过失败的代码时,调试控制台会打印:

Exception thrown: 'System.InvalidOperationException' in Microsoft.EntityFrameworkCore.dll
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Diagnostics.StackTrace.dll'. Cannot find or open the symbol file.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Reflection.Metadata.dll'. Cannot find or open the symbol file.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.MemoryMappedFiles.dll'. Cannot find or open the symbol file.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.UnmanagedMemoryStream.dll'. Cannot find or open the symbol file.

其中很多Cannot find or open the symbol file. 也会在启动时打印出来。我已经检查了文件是否位于指定的位置,并且不应该有任何读取访问问题(已经使用 sudo code . 开始 vs 代码,甚至在相关文件夹中完成了 sudo chmod 777 *)。

那么,有什么想法为什么没有加载符号?

【问题讨论】:

  • 听起来您没有正确安装 Visual Studio Code 和/或 .NET Core。你能编辑你的帖子来描述你用来安装的步骤吗?您根本不需要执行 chmod。 (我在 OSX 上愉快地运行 VSCode 有一段时间了。)
  • 使用自制软件进行标准安装,如下所述:microsoft.com/net/core#macos。 VS Code 使用标准安装程序安装。 sudo 和 chmod 只是在黑暗中拍摄,我认为 pdb 文件的位置无法被正在运行的进程或类似的东西访问。
  • 我遵循了相同的说明 (OSX) 并遇到了完全相同的问题。我不想每次调试时都看到一堵警告墙

标签: debugging asp.net-core visual-studio-code debug-symbols


【解决方案1】:

在 Windows 10 VM 上运行 VS Code 时遇到了同样的问题。

我找到的解决方法是在我的project.json 文件的buildOptions 部分添加一个"debugType": "portable" 设置。

我的看起来像这样:

"buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "debugType": "portable"
}

在 VS Code 中进行调试实际上并没有那么糟糕。

【讨论】:

  • 嘿,成功了!你是对的,它根本不是一个糟糕的调试器。
  • 这显然在 OSX 和 Linux 上默认发生,根据:docs.microsoft.com/nb-no/dotnet/articles/core/tutorials/…
  • 这已经是 1.1 的标准了。还是同样的问题。
  • @Erik 链接的教程我解释为"debugType":"portable" 将在 Windows 上“生成可移植的 PDB 文件(默认情况下在 Mac OSX 和 Linux 上发生)”。 OP 正在寻找 .NETCore dll 的符号以帮助调试。将符号文件报告为丢失没有帮助。
【解决方案2】:

我认为您对 VSCode 所说的无法加载的内容感到困惑。这并不是说它不能加载 DLL。 “符号”文件具有 .PDB 扩展名。为了调试 DLL 生成的错误,调试器需要相应的符号文件,因此如果 PDB 文件不存在,更改 DLL 的权限不会使错误消失。

我刚刚开始在 Mac 上使用 VSCode,据我所见,如果您使用 Homebrew 安装 dotnet core(这是他们推荐的),则不会获得 PDB 文件,并且我在启动时看到了类似的消息调试器。这并不能阻止我调试自己的代码,因为我的 DLL 生成了一个 PDB 文件。如果您需要调试 dotnet 核心本身的问题,它只会导致问题。

【讨论】:

  • 同样的场景,但是 VSCode 仍然无法通过已安装包的代码,例如Nancy、EF 等。我只能看到我的代码,堆栈跟踪中的所有其他语句都是“无名”。有什么线索吗?
  • 我不认为我很困惑 :) 如果 dll 没有加载,进程会崩溃并更快地烧毁。正如我在问题中所述,我能够调试、设置断点并逐步执行代码。只是当输出窗口应该打印堆栈跟踪时,却找不到需要的符号。
  • @Erik 我遇到了同样的问题。你的解决方案是什么?通过其他安装方法安装符号?
  • @PhilRicketts 不幸的是,到目前为止,我还没有找到解决方法。但是,我确实在变量窗口中获得了异常详细信息,但堆栈跟踪仍未显示在输出窗口中。
猜你喜欢
  • 2016-03-09
  • 2013-08-19
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
相关资源
最近更新 更多