【发布时间】:2022-02-06 09:03:53
【问题描述】:
我使用 Visual Studio 2019 和 .NET Core 3 Web 应用程序。我想调试 .NET Core 源代码,因此当发生错误时,我可以深入研究代码并更详细地检查它。由于我找不到有关如何操作的确切描述(即使在 Microsoft 文档站点上),我将尝试在这里总结一下我目前所知道的。
我在 Visual Studio 中有以下选项:
- 只启用我的代码
- 启用 .NET 框架源代码步进
- 启用源服务器支持
- 启用源链接支持
前两个选项是互斥的。我想我应该选择第二个选项,虽然我不明白这个选项中的“.NET 框架”是否包含 .NET Core?
现在 .NET Core 是开源的并且可以在 GitHub 上获得,我不明白第三个和第四个选项。第三个应该允许我从 Microsoft 符号服务器中提取源代码(符号是否包含源代码?)而第四个应该允许我从 GitHub 中提取源代码?我需要其中一个吗?
首先,我在 Main 方法中的 CreateHostBuilder 上放了一个断点,选择第三个选项并运行应用程序。命中断点后,我继续单步执行代码 (F11),直到出现一条消息“找不到 GenericHostBuilderExtensions.cs”。它让我可以浏览它,但我不知道在哪里可以找到它。
让我们再试一次,这次选择第四个选项(并取消选择第三个选项)。现在,在断点被命中后,Visual Studio 让我可以通过 Source Link 下载前面提到的文件。我接受,但结果是消息
源链接错误:Azure DevOps:所有帐户的身份验证都失败。使用“文件 -> 帐户设置...”添加新帐户或刷新凭据。
嗯,我已使用我的 Microsoft 帐户登录。我还应该做什么?
我再重复一遍,这次同时选择第三个和第四个选项。结果是一样的。
现在我选择另一个 Source Link 选项:“回退到 Git 凭据管理器...”并重新开始。同样的结果。
当然,我在 Google 上进行了广泛搜索,并花了很长时间试图找到解决方案,但我遗漏了一些东西。我很感激有关上述选项的确切作用以及如何通过进入 .NET Core 源代码进行调试的帮助。
【问题讨论】:
-
所有这些都在文档和多篇文章中进行了解释。 symbol servers, symbol sources 之间的区别也许可以追溯到 VS 2010?他们不是 Github。符号服务器提供调试任何 DLL 所需的 PDB 文件,包括 Windows dll 的 PDB。如果没有 PDB,源文件将毫无用处,因为调试器无法知道哪些指令与源中的哪个位置匹配。
-
SourceLink 是新的,它允许 NuGet 包指向生成它们的源文件,有点像源服务器。 NuGet 文件必须包含
pdb符号文件 -
在 VS2019 中将 nuget 符号服务器添加到符号服务器:blog.nuget.org/images/…
-
请参阅Debug .NET and ASP.NET Core source code,它具有明确的 Microsoft 说明并得到支持和维护。
标签: debugging asp.net-core visual-studio-debugging visual-studio-2019