当前位置: 首页 > article >正文

在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逐语句源代码调试:

图片

图片

图片


http://www.kler.cn/a/273608.html

相关文章:

  • Java环境下配置环境(jar包)并连接mysql数据库
  • 【初阶数据结构篇】链式结构二叉树(二叉链)的实现(感受递归暴力美学)
  • IMU应用于监测进食
  • 03:选择语句的练习
  • 「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制
  • windows在两台机器上测试 MySQL 集群实现实时备份
  • 在Linux/Ubuntu/Debian中创建自己的命令快捷方式
  • 论文笔记:液体管道泄漏综合检测与定位模型
  • 探索编程迷宫:选择你的职业赛道
  • Day68:WEB攻防-Java安全原生反序列化SpringBoot攻防heapdump提取CVE
  • 【小程序开发】蓝牙设备API——单点蓝牙应用程序编程接口整理(二)
  • 强缓存和协商缓存
  • 基于深度学习YOLOv8+Pyqt5的工地安全帽头盔佩戴检测识别系统(源码+跑通说明文件)
  • Linux系统之jq工具的基本使用
  • TCP - 传输控制协议
  • Java基础经典10道题
  • Python Web开发记录 Day13:Django part7 Ajax入门与案例(任务管理)
  • java 常见排序算法以及详细代码
  • 婚恋交友系统开发-PHP书写-uniAPP开发-安装环境7.3-数据库5.6-源码交付-支持二开!
  • django管理日志记录(日志审计django_admin_log)
  • p2p原理
  • WMware安装ghost镜像
  • 使用verilog写一个模拟比特币挖矿游戏及testbench
  • Stable Diffusion WebUI 生成参数:采样器(Sampling method)和采样步数(Sampling steps)
  • 【解读】NIST网络安全框架CSF 2.0
  • idea+vim+pycharm的块选择快捷键