пятница, 20 июня 2008 г.

Установка имени потока в msvc.

При отладке в Microsoft Visual Studio 2005/2008 (с++), потокам в режиме debug-breakpoints можно задать имена. Поиск по мсдн ничего толком не дал. По остальным источникам, оказалось что есть вот такая функция, даже работает. (проверено )) Вот исходный код, пользуемся.

  1. /* Установка имени для потока в отладчике */   
  2. void SetThreadName ( DWORD nThreadID, const char* pThreadName )   
  3. {   
  4.     struct   
  5.     {   
  6.         DWORD dwType; // Должно быть 0x1000   
  7.         LPCSTR szName; // Указатель на строку с именем   
  8.         DWORD dwThreadID; // Идентификатор потока ( -1 для текущего )   
  9.         DWORD dwFlags; // Зарезервировано ( должно быть 0 )   
  10.     }    
  11.    
  12.     info = { 0x1000, pThreadName, nThreadID, 0 };   
  13.    
  14.     __try   
  15.     {   
  16.         // 0x406D1388 - магическое число, которое сообщает отладчику имя потока   
  17.         RaiseException ( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info );   
  18.     }   
  19.     __except ( EXCEPTION_CONTINUE_EXECUTION )   
  20.     {   
  21.    
  22.     }   
  23. }