在windows平台下debug模式有效
#ifdef WIN32
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;
#endif
void SetThreadName(const char* format, ...)
{
// This isn't supported on *nix
va_list ap;
va_start(ap, format);
#ifdef WIN32
char thread_name[200];
vsnprintf(thread_name, 200, format, ap);
THREADNAME_INFO info;
info.dwType = 0×1000;
info.dwThreadID = GetCurrentThreadId();
info.dwFlags = 0;
info.szName = thread_name;
__try
{
#ifdef _WIN64
RaiseException(0×406D1388, 0, sizeof(info)/sizeof(DWORD), (ULONG_PTR*)&info);
#else
RaiseException(0×406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info);
#endif
}
__except(EXCEPTION_CONTINUE_EXECUTION)
{
}
#endif
va_end(ap);
}
2010-3
30
- 如果您从本文中得到帮助或对本站感兴趣,请订阅本站全文 Feed(参考订阅帮助)。
- 转载原创文章请注明,转载自 : freshbug's Blog[http://www.freshbug.com]
- 本文永久链接 : http://www.freshbug.com/archives/91
目前还没有评论.


分享到做啥
分享到收客
