VS рдореЗрдВ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдереНрд░реЗрдбрдкреВрд▓ рд╕реЗ рдереНрд░реЗрдбреНрд╕ рдХреЛ рдирд╛рдо рди рджреЗрдВ

рдХреБрдЫ 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 рдПрдХ рдзреАрдореА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред

рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХрдИ рдЗрд╖реНрдЯрддрдо рдирд┐рдХрд╛рд╕ рдереЗ:

  1. рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдирд╛рдо рди рджреЗрдВред
  2. рдХреЗрд╡рд▓ рдПрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЛрдб рдореЗрдВ рдкреНрд░рд╡рд╛рд╣ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рджреМрдбрд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдЦрд░рд╛рдм рд╣реИ - рд╣рдо рдЕрдм рдирд╛рдореЛрдВ рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдиреЗрдВрдЧреЗред
  3. рд╢реНрд░рдорд┐рдХ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдЬреБрдбрд╝реЗ рдбрд┐рдмрдЧрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рдо рдерд╛ред IsDebuggerPresent

All Articles