C#多线程调试
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#多线程调试相关的知识,希望对你有一定的参考价值。
概要
这篇文章主要分享多线程部分调试技巧,在日常的开发工作中会经常遇到多线程调试的需要。在我们调试的过程中会出现断点的焦点在多个线程之间“反复横跳”根本无法集中跟踪某一个线程的操作链路。那么今天我们来看看如何调试操作。如果有其它需要的可以参考下面微软官方的文档地址。
参考文献:https://docs.microsoft.com/zh-cn/visualstudio/debugger/get-started-debugging-multithreaded-apps?view=vs-2022
工具:VisualStudio 2022
框架:.NET5
语言:C#
程序:控制台应用
详细内容
开始调试之前我们先需要明白一个概念--“调试条件”。
调试条件编写,下图的红圈里就是编写条件的文本框。文本框里的内容和写C#代码中if判断里的条件没有任何区别。同时还能在里面编写方法。
---分割线--
当条件文本框失去焦点之后自动保存。
调试技巧1:
1.编写测试代码
internal class Program
static void Main(string[] args)
Task[] task = new Task[6];
for (int i = 0; i < task.Length; i++)
task[i] = Task.Run(Do);
Task.WaitAll(task);
private static void Do()
int x = Thread.CurrentThread.ManagedThreadId;
while (true)
Console.WriteLine(DateTime.Now);
2.打开线程监控窗口(需debug启动之后再点开“调试”选项)
3.设置断点
4.设置你需要查看的线程id
编写调试条件
F10开始调试
调试技巧2:
1.编写测试代码
internal class Program
static void Main(string[] args)
Task[] task = new Task[6];
for (int i = 0; i < task.Length; i++)
task[i] = Task.Run(Do);
Task.WaitAll(task);
private static void Do()
int x = Thread.CurrentThread.ManagedThreadId;
//循环调试
for (int i = 0; i < 100; i++)
Console.WriteLine(i);
当遇到循环时,也可以编写调试条件。这样我们就不用一直按F10按50次了。
以上是关于C#多线程调试的主要内容,如果未能解决你的问题,请参考以下文章