Fresto Asked:2020-11-07 22:04:09 +0000 UTC2020-11-07 22:04:09 +0000 UTC 2020-11-07 22:04:09 +0000 UTC 调试特定线程 772 调试时,会创建 8 个线程,每个线程并行执行相同的功能。您如何跟踪F11从特定流的开始到结束的路径?不管怎样,当你按下 时F11,所有线程在调试时都是并行的,了解的太少了。 c# 1 个回答 Voted Best Answer VladD 2020-11-07T22:15:55Z2020-11-07T22:15:55Z 例如,在 Visual Studio 中,您可以将其他线程冻结一段时间: 之后别忘了解冻它们!然后一个线程将永远等待另一个线程的结束。 如果其他线程需要同时运行,您可以设置一个条件断点来检查线程ID(右键单击断点→条件...): 但是,在下一次运行时,需要编辑或删除断点,因为线程 ID 可能会更改。 但是不要忘记,多线程调试并不是那么容易!如果您的代码中有竞争条件,那么调试器和断点的存在会影响不同线程中代码执行的顺序,因此很有可能错误可能不会出现在单步调试断点中。为了解决这个问题,您必须添加日志记录(这对执行顺序的影响远小于在调试器中停止)。如果日志不能让你定位问题,那么你必须使用仔细观察的方法,只是分析你脑海中的代码。 调试多线程 pod 是编程中最难做的事情之一。
例如,在 Visual Studio 中,您可以将其他线程冻结一段时间:
之后别忘了解冻它们!然后一个线程将永远等待另一个线程的结束。
如果其他线程需要同时运行,您可以设置一个条件断点来检查线程ID(右键单击断点→条件...):
但是,在下一次运行时,需要编辑或删除断点,因为线程 ID 可能会更改。
但是不要忘记,多线程调试并不是那么容易!如果您的代码中有竞争条件,那么调试器和断点的存在会影响不同线程中代码执行的顺序,因此很有可能错误可能不会出现在单步调试断点中。为了解决这个问题,您必须添加日志记录(这对执行顺序的影响远小于在调试器中停止)。如果日志不能让你定位问题,那么你必须使用仔细观察的方法,只是分析你脑海中的代码。
调试多线程 pod 是编程中最难做的事情之一。