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

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


选中启用源链接支持

选中启用符号服务器
在“工具”->“选项”->“调试”->“符号”中,启用“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开发者带来更多的价值和成长机会。
使用Visual Studio调试 .NET源代码的更多相关文章
- 【译】使用 Visual Studio 调试外部源代码
您是否曾经需要调试并进入依赖于 NuGet 或 .NET 库的代码,而这些库并没有构建为您的解决方案的一部分? 现在,调试它们并不像调试作为解决方案一部分的项目那么容易.从 Visual Studio ...
- Visual Studio调试之断点进阶篇
Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...
- Visual Studio调试之断点基础篇
Visual Studio调试之断点基础篇 我曾经问过很多人,你一般是怎么调试你的程序的? F9, F5, F11, F…… 有很多书和文章都是介绍怎么使用Visual Studio编写WinForm ...
- 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求. 内容 查找符号 (.pdb) 文件 查找源文件 查找符号 (.pdb) 文件 说明 在之前的 Vis ...
- Visual Studio调试之断点技巧篇
原文链接地址:http://blog.csdn.net/Donjuan/article/details/4618717 函数断点 在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我 ...
- Visual Studio调试之符号文件
原文链接地址:http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio ...
- [转]Visual Studio调试之符号文件
http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio调试之断点进阶 ...
- Visual Studio 调试(系列文章)
调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...
- Visual Studio 调试系列10 附加到正在运行的进程
系列目录 [已更新最新开发文章,点击查看详细] 可将 Visual Studio 调试器附加到本地或远程计算机上正在运行的进程. 进程运行后,在 Visual Studio 中选择“调试” & ...
- Visual Studio 调试系列9 调试器提示和技巧
系列目录 [已更新最新开发文章,点击查看详细] 01 固定数据提示 如果你在调试时,经常将鼠标悬停在数据提示上,就可能想固定变量的数据提示,方便自己随时查看. 即使在重新启动后,固定的变量也能 ...
随机推荐
- CANN5.0黑科技解密 | 高并发图片视频处理,为出行保驾,为生活添彩!
摘要:华为推出昇腾AI基础软硬件平台(昇腾AI处理器+异构计算架构CANN),不仅能高效承接各类人工智能计算任务,还可两招解决以上图像处理面临的诸多问题. 四通八达的路网和车水马龙的盛景诠释着城市的繁 ...
- 从 ByteHouse 网关,看如何进一步提升 OLAP 引擎性能
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着数字化转型的加速,企业面临着海量数据收集.处理和分析挑战.ClickHouse因其分析速度快.高性能的特点 ...
- DamiBus v0.51 发布
DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块.隔离模块.领域模块).零依赖,特适合 DDD. 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅. 支 ...
- 🤗 Datasets 使用小贴士: 探索解决数据集无法下载的问题
Hugging Face Hub 是强大的机器学习的数据源.相信大家在国内用 Hugging Face Datasets 都遇到过下载的问题.譬如: import datasets dataset = ...
- Nginx--引用多配置文件
在nginx.conf的http模块,include 指定某个目录下的*.conf user nginx; worker_processes auto; error_log /var/log/ngin ...
- CS01 BOM客制化屏幕增强
一.BOM行项目新增定制字段 效果如下 二.前台增强实现步骤 1.行项目表新增字段 2.CMOD,增强项目PCSD0002:在行项目中增强(PCSD0003:在抬头增强) 3.双击创建定制化屏幕 4. ...
- JSP 简单入门与 IDEA 开发环境配置
原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处. 在学 Java 连接数据库时老师提到过 JSP,刚好这个学期有 JSP 的课程,现做一些基础以及 ...
- 换架 3D 飞机,继续飞呀飞
相信大多数图扑 HT 用户都曾见过这个飞机的 Demo,在图扑发展的这十年,这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一. 这个 Demo 用简洁的代码生动地展示了 OBJ ...
- Eureka相关相关接口和代码位置
1.服务注册:com.netflix.eureka.registry.AbstractInstanceRegistry#register(InstanceInfo registrant, int le ...
- freeswitch通过limit限制cps
概述 freeswitch在业务开发中有极大的便利性,因为fs内部实现了很多小功能,这些小功能组合在一起,通过拨号计划就可以实现很多常见的业务功能. 在voip云平台的开发中,我们经常会碰到资源的限制 ...