在下面的控制台应用程序中,如果我在最后一行放置断点 Go(); 并通过按 F5 执行直到断点(在调试模式下),每次运行的结果差别不大。
控制台可以为空白(不输出任何内容):
或者它可以在另一次运行中仅输出部分结果:
或者,在极少数情况下,结果是“完整的”(“实际的”):
如果我按 F10 (Step Over) 或 F11 (Step into) 进行调试,执行的结果会立即输出到控制台窗口。
为什么会有这样的差异?
假设我正在使用 3d 方库调试一个应用程序,以获取我没有访问权限的源代码。
是否可以在不进入他们的代码的情况下确保他们的输出?
控制台应用程序代码:
using System;
using System.Threading;
namespace _5_2
{
class ThreadNaming
{
static void Main()
{
Thread.CurrentThread.Name = "main";
Thread worker = new Thread(Go);
Thread worker2 = new Thread(Go);
worker.Name = "1111";
worker.Start();
//string just4breakPoint = "aaa";
worker2.Name = "2222";
worker2.Start();
Go();
Console.ReadLine();
}
static void Go()
{
Console.WriteLine
("Hello from " + Thread.CurrentThread.Name);
}
}
}