我无法调试 .NET Core 源代码

Posted

技术标签:

【中文标题】我无法调试 .NET Core 源代码【英文标题】:I'm not able to debug .NET Core source code 【发布时间】:2021-04-05 02:56:46 【问题描述】:

是的,我知道这个问题不时出现,我在互联网上搜索过答案,但似乎没有任何问题。因此,我准备了详细的解释,并附有屏幕截图,说明我试图通过 .NET Core 源代码跟踪代码执行以及结果如何。

我正在使用 Visual Studio Community 16.8.3,并从模板创建了一个 .NET Core 3.1 Web 应用程序。我更改了 Startup 类中的代码,使其崩溃。

这些是我的调试设置(我不知道天气 .NET Framework 源步进对 .NET Core 项目有什么意义):

让我们运行并遇到异常:

这里我选择只对源代码进行反编译(上图有链接),看看是否可行:

好的,但我只看到代码,无法检查变量和对象值。让我们重新运行一下,看看是否可以在异常发生时通过单击符号服务器来获取代码:

它报错了,所以让我们启用源服务器。

让我们再次运行它,然后遇到异常。

现在它抱怨某种排除(参见符号状态列):

我手动加载所有符号:

在这里我重新运行应用程序,加载了所有符号,但是当异常发生时我仍然无法 F11 进入 .NET Core 源代码:

能够单步调试 .NET Core 源代码我缺少什么?

【问题讨论】:

“启用 .Net Framework 源代码步进”? 我使用的是 .NET Core,而不是 .NET Framework。无论如何,我也尝试了该选项,但一切都保持不变。 这里向您展示如何调试 ASP.NET Core 源代码:levelup.gitconnected.com/… 【参考方案1】:

您是否启用了源链接?执行以下操作后,我能够进入 .NET Core 3.1 源代码:

在工具 -> 选项 -> 调试 -> 常规中取消选中“仅启用我的代码”并选中“启用源链接支持”

在工具 -> 选项 -> 调试 -> 符号中激活符号服务器

我从 Microsoft Devblogs 上的 Improving Debug-time Productivity with Source Link 获得此信息。

【讨论】:

【参考方案2】:

异常表示Startup 类中缺少公共方法Configure。应用程序没有正确启动,这就是调试不起作用的原因。

【讨论】:

应用程序在 .NET Core 源代码中遇到异常。我想查看异常发生的点,以检查它发生的上下文。我自己创建了会出现异常的情况,这只是实际系统中可能出现的情况的简化示例。 您可以通过启用 Source Link 支持来进入 .NET Core 源代码(我添加了一个答案以更详细地描述它)。

以上是关于我无法调试 .NET Core 源代码的主要内容,如果未能解决你的问题,请参考以下文章

令牌无法存储在 .NET Core 中

.Net Core 5 项目无法在 Visual Studio 2019 中运行

ASP.NET Core Kestrel 随机404错误

无法调试 .Net 代码。无法附加到进程。 SQL CLR 远程调试

.NET Core 2.0 日志记录是不是损坏?

多个异步操作在 ASP.NET Core 中不起作用