Visual Studio线程窗口如何识别“主线程”

时间:2011-02-03 20:24:28

标签: .net visual-studio multithreading debugging

我可能会遗漏一些明显的东西,但是幽默我......

我总是喜欢在我的应用程序中命名重要的线程,因为它对调试/日志记录等有用。如果在程序启动时通过Thread.CurrentThread.Name查询主线程的名称,您将返回null。因此,我始终确保首先发生的是主线程(以及任何其他相关线程)被分配一个有意义的名称以供将来参考。

直到今天我才真正考虑过它,但是在查看Visual Studio中的Threads窗口时(在分配任何线程名称之前等),会分配一个特殊类别'Main Thread'以及一个psuedo名称。读取“主线程”(但这不是实际的线程名称)。

从托管的角度来看,.NET不会在标识应用程序主线程的System.Threading.ThreadSystem.Diagnostics.ProcessThread上公开任何有意义的内容(至少我可以看到)。我看了Windows Process and Thread Functions的列表,再一次,我没有看到任何明显的东西(也许是OpenThread?)。

好奇,如果有人知道线程窗口如何分配特殊类别“主线程”?

1 个答案:

答案 0 :(得分:5)

调试器使用DEBUG_PROCESS选项开始使用CreateProcess进行调试。主线程的句柄在PROCESS_INFORMATION.hThread中返回,所以没有猜测。附加有点棘手,可能是它在附加DebugActiveProcess()之后从WaitForDebugEvent看到的第一个CREATE_THREAD_DEBUG_EVENT通知。

如果您想仔细查看,可以使用MDbg的source code