使用Visual Studio调试 .NET源代码

前言

在我们日常开发过程中常常会使用到很多其他封装好的第三方类库(NuGet依赖项)或者是.NET框架中自带的库。如果可以设置断点并在NuGet依赖项或框架本身上使用调试器的所有功能,那么我们的源码调试体验和生产效率会得到大大的提升。今天我们就一起来学习一下如何使用Visual Studio调试.NET源代码。

Visual Studio更多实用技巧

https://github.com/YSGStudyHards/DotNetGuide

取消选中启用仅我的代码

首先需要在在"工具"->"选项"->"调试"->"常规"中取消选中"启用仅我的代码"。

选中启用源链接支持

选中启用符号服务器

在"工具"->"选项"->"调试"->"符号"中,启用"Microsoft符号服务器"和"NuGet.org符合服务器"。

启用在模块加载时取消JIT优化(仅限托管)[可选]

在Visual Studio中启用"在模块加载时取消 JIT 优化(仅限托管)"功能是为了在调试代码时更容易地定位和解决问题。这个功能会防止 JIT 编译器对代码进行优化,从而使得调试器能够更准确地显示代码的执行过程。

在"工具"->"选项"->"调试"->"常规"中,启用"在模块加载时取消 JIT 优化(仅限托管)":

启用Visual Studio调试源码

注意:第一次设置完之后会加载的比较缓慢,需要耐心等等。

我们使用System.Text.Json来进行JSON字符串反序列化成.NET对象的源码调试,查看JsonSerializer.Deserialize方法的内部实现:

程序代码:

复制代码
`    internal class Program`
`    {`
`        static void Main(string[] args)`
`        {`
`            var userInfoStr = "[{\"UserName\":\"追逐时光者\",\"Description\":\"一个热爱捣鼓的全栈软件工程师\",\"Sex\":\"男\"},{\"UserName\":\"大姚\",\"Description\":\"帅气小伙\",\"Sex\":\"男\"},{\"UserName\":\"小艺子\",\"Description\":\"超级大美女\",\"Sex\":\"女\"}]";`
`            var userInfoObj = JsonSerializer.Deserialize<List<UserModel>>(userInfoStr);`
`        }`
`    }`

`    public class UserModel`
`    {`
`        public string UserName { get; set; }`
`        public string Description { get; set; }`
`        public string Sex { get; set; }`
`    }`

F11逐语句源代码调试:

DotNetGuide技术社区交流群

  • DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目推荐、招聘资讯和解决问题的平台。
  • 在这个社区中,开发者们可以分享自己的技术文章、项目经验、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
  • 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值和成长机会。

欢迎加入DotNetGuide技术社区微信交流群👪

相关推荐
追逐时光者3 天前
.NET使用Umbraco CMS快速构建一个属于自己的内容管理系统
【.net】·【c#】·【开源项目】·【.net core】
追逐时光者4 天前
一个.NET开源、快速、功能丰富的跨平台阅读服务器
【.net】·【c#】·【开源项目】·【.net core】
追逐时光者5 天前
一个基于 .NET 8.0 构建的简单、跨平台、模块化商城系统
【.net】·【c#】·【开源项目】·【.net core】
追逐时光者7 天前
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
【.net】·【c#】·【.net core】·【技术前沿周刊】
追逐时光者8 天前
使用Microsoft.Extensions.AI简化.NET中的AI集成
【.net】·【c#】·【开源项目】·【.net core】·【aigc】
追逐时光者9 天前
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
【.net】·【c#】·【开源项目】·【.net core】
追逐时光者10 天前
利用腾讯元器,将公众号变身为强大的.NET AI智能体
【.net】·【c#】·【ai编程】·【.net core】·【aigc】
追逐时光者11 天前
.NET现在可以做什么,有哪些公司在用的?
【.net】·【c#】·【.net core】
追逐时光者13 天前
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
【.net】·【c#】·【.net core】·【技术前沿周刊】
追逐时光者14 天前
基于.NET开源、功能强大且灵活的工作流引擎框架
【.net】·【c#】·【开源项目】·【.net core】