修改线程名称并在VC调试器中显示

2014-11-11 14:45:20 · 作者: · 浏览: 30

  #define MS_VC_EXCEPTION 0x406d1388


  typedef struct tagTHREADNAME_INFO


  {


  DWORD dwType; // must be 0x1000


  LPCSTR szName; // pointer to name (in same addr space)


  DWORD dwThreadID; // thread ID (-1 caller thread)


  DWORD dwFlags; // reserved for future use, most be zero


  } THREADNAME_INFO;


  void SetThreadName(DWORD dwThreadID, LPCTSTR szThreadName)


  {


  THREADNAME_INFO info;


  info.dwType = 0x1000;


  info.szName = szThreadName;


  info.dwThreadID = dwThreadID;


  info.dwFlags = 0;


  __try


  {


  RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(DWORD),


  (DWORD *)&info);


  }


  except (EXCEPTION_CONTINUE_EXECUTION)


  {


  }


  }


  线程名称限制在9个ANSI字符内,调用这个函数后,将触发一个调试器异常,VC调试器将会把字符串设置为线程名称,并在调试器中显示。


  编辑特别推荐: