Visual C++ 7.1Visual C++ 8.0Windows VistaVisual C++ 7.0Windows 2003Windows 2000Visual C++ 6.0高级Windows XP开发Visual StudioWindowsC++
在 VC 调试器的线程列表中命名您的线程






4.27/5 (19投票s)
2004年10月13日

93148
VC 调试器为每个线程显示一个名称。本文档描述了如何控制 VC 在线程列表中显示的内容。
引言
几天前,有人问我是否可以重命名 VC 调试器中的线程。由于我那时正从事一个多线程项目,我对实现这个想法非常感兴趣。在 Google 群组中搜索了一番后,我找到了一种简单易行的解决方案。由于这对于所有从事多线程应用程序开发的人来说都可能很有帮助,因此我在这里分享它。
理解的关键在于,VC 调试器通过异常 #0x406D1388 获取线程名称信息。
我将必要的调用放入了一个简单的函数。以下是代码:
// // Usage: SetThreadName (-1, "MainThread"); // typedef struct tagTHREADNAME_INFO { DWORD dwType; // must be 0x1000 LPCSTR szName; // pointer to name (in user addr space) DWORD dwThreadID; // thread ID (-1=caller thread) DWORD dwFlags; // reserved for future use, must be zero } THREADNAME_INFO; void SetThreadName( DWORD dwThreadID, LPCSTR szThreadName) { THREADNAME_INFO info; { info.dwType = 0x1000; info.szName = szThreadName; info.dwThreadID = dwThreadID; info.dwFlags = 0; } __try { RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info ); } __except (EXCEPTION_CONTINUE_EXECUTION) { } }
你只需要使用线程 ID 和一个名称字符串作为参数来调用 SetThreadName()
即可。
祝你使用这个小工具愉快! ;)