рдХреБрдЫ 2017 рдореЗрдВ, рд╡реАрдПрд╕ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрддреНрдкрд╛рджрдХрддрд╛ ~ 80% рддрдХ рдЧрд┐рд░ рдЧрдИ, рдЦреЗрд▓ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлреНрд░реЗрдо рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рдЙрддреНрд╕рд╡ рдХрд╛ рдЕрдкрд░рд╛рдзреА рдкреВрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рдорд╛рд░реЛрд╣ SetThreadName рдерд╛редрдХреМрди рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИ - рдереНрд░реЗрдбрдкреВрд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рдмрдВрдзрдХ рд╣реИ рдЬреЛ рд╕рдорд╛рди рдХреЛрдб рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрдХрд┐рд▓ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдХрдИ рдзрд╛рдЧреЗ рдмрдирд╛рдиреЗ (рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░ рдХреЗ рд▓рд┐рдП 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдФрд░ рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ / рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рдирд╛ рд╣реИредSetThreadName рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:void SetThreadName(DWORD dwThreadID, const char* threadName) {
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = threadName;
info.dwThreadID = dwThreadID;
info.dwFlags = 0;
#pragma warning(push)
#pragma warning(disable: 6320 6322)
__try{
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR*)&info);
}
__except (EXCEPTION_EXECUTE_HANDLER){
}
#pragma warning(pop)
}
рдирдИ WinSDK рдореЗрдВ, RaiseException рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рд╣реИрдХ рдХреЛ SetThreadDescription рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдЬреЛ рдЕрдВрддрддрдГ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ RaiseException рдПрдХ рдзреАрдореА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИредрд╕реНрдерд┐рддрд┐ рд╕реЗ рдХрдИ рдЗрд╖реНрдЯрддрдо рдирд┐рдХрд╛рд╕ рдереЗ:- рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдирд╛рдо рди рджреЗрдВред
- рдХреЗрд╡рд▓ рдПрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЛрдб рдореЗрдВ рдкреНрд░рд╡рд╛рд╣ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рджреМрдбрд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдЦрд░рд╛рдм рд╣реИ - рд╣рдо рдЕрдм рдирд╛рдореЛрдВ рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдиреЗрдВрдЧреЗред
- рд╢реНрд░рдорд┐рдХ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдЬреБрдбрд╝реЗ рдбрд┐рдмрдЧрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рдо рдерд╛ред IsDebuggerPresent