使用“断点组”来简化调试
当我们调试复杂代码时,尤其是那些长年累月无人维护的不良代码,我们常常遇到的情况是,我们需要打大量的断点,并且在调试的时候,不断的反复启用和禁用它们,一不注意还容易错误的将断点删除,这是一个糟糕的调试体验。
随着 Visual Studio 2022 新版本的发布,新的“断点组”特性已经加入其中。此特性允许我们创建断点组,用于将某类断点统一管理,从而使调试过程更加简单和高效。
下面让我们看一下“断点组”的使用。
Step 01 准备一个控制台程序
下面是一个验证素数的控制台应用。
using System.Collections.Concurrent; using System.Diagnostics; namespace Demo { class Program { static void Main() { var limit = 2000000; var numbers = Enumerable.Range(0, limit).ToList(); var watch = Stopwatch.StartNew(); var primeNumbersFromForeach = GetPrimeList(numbers); watch.Stop(); var watchForParallel = Stopwatch.StartNew(); var primeNumbersFromParallelForeach = GetPrimeListWithParallel(numbers); watchForParallel.Stop(); Console.WriteLine($"Classical foreach loop | Total prime numbers: {primeNumbersFromForeach.Count} | Time Taken: {watch.ElapsedMilliseconds} ms."); Console.WriteLine($"Parallel.ForEach loop | Total prime numbers : {primeNumbersFromParallelForeach.Count} | Time Taken:{watchForParallel.ElapsedMilliseconds} ms."); Console.ReadLine(); } private static IList<int> GetPrimeList(IList<int> numbers) => numbers.Where(IsPrime).ToList(); private static IList<int> GetPrimeListWithParallel(IList<int> numbers) { var primeNumbers = new ConcurrentBag<int>(); Parallel.ForEach(numbers, number => { if (IsPrime(number)) { primeNumbers.Add(number); } }); return primeNumbers.ToList(); } /// <summary> /// 判断是否为素数 /// </summary> /// <param name="number"></param> /// <returns></returns> private static bool IsPrime(int number) { if (number < 2) { return false; } for (var divisor = 2; divisor <= Math.Sqrt(number); divisor++) { if (number % divisor == 0) { return false; } } return true; } } }
Step 02 创建“断点组”
在断点窗口中,点击 新建 -> 断点组
输入断点组名称,设置断点组
将任意断点添加到断点组
设置好后的样子
Step 03 验证“断点组”
* 可以通过断点组,启用或禁用一组断点。
* 可以通过断点组,设置“仅当命中以下代码时启用”。
小结
“断点组”带来的优点:
* 对于大量断点的复杂场景提供了一种自定义断点配置和单独或组合切换断点的方法,从而使调试、测试和故障排除更快、更有效。
“断点组”的不足:
* 目前断点组尚未支持导入与导出。
* 目前断点组仅支持“仅当命中以下代码时启用”设置,尚未支持其他断点设置。
作者:MeteorSeed
我希望您喜欢这篇博文,并一如既往地感谢您阅读并与朋友和同事分享我的博文。
转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?