当你调试多线程应用是,Threads窗口会显示创建了哪些线程,以及当前的线程。线程越多,你就越难找到你要找的线程(特别是当同一段程序,被多个线程同时执行的时候,你就不知道当前执行的是哪个线程实例)
调试器允许你给线程重新命名。用右键单击一个线程,并重命名。
也可以以程式设计方式命名线程,虽然这有点棘手而且线程启动后必须去做的,否则调试器将以它的默认命名规定重新将其初始化,下面的函数显示了如何定义和使用一个线程。
01
|
typedef struct tagTHREADNAME_INFO
|
03
|
DWORD dwType; // 必须是两个字节的长度
|
04
|
LPCSTR szName; // 指针指向命名 (同一个地址空间)
|
05
|
DWORD dwThreadID; // 线程ID(-1调用线程)
|
06
|
DWORD dwFlags; // 保留待用,多数情况下为0
|
09
|
void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
|
13
|
info.szName = szThreadName;
|
14
|
info.dwThreadID = dwThreadID;
|
19
|
RaiseException(0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info);
|
21
|
__except (EXCEPTION_CONTINUE_EXECUTION)
|