Как изменить название темы - PullRequest
9 голосов
/ 26 января 2009

У меня есть серверное приложение, которое использует «много» потоков. Не желая вступать в спор о том, сколько потоков он действительно должен использовать, было бы неплохо иметь возможность увидеть некоторый описательный текст в окне «потоков» отладчика, описывающий, что представляет собой каждый из них, без необходимости нажимать на него и определить из контекста, что это такое.

Все они имеют один и тот же начальный адрес, поэтому обычно окно потоков говорит что-то вроде "thread_base :: start" или что-то подобное. Я хотел бы знать, есть ли вызов API или что-то, что позволяет мне настроить этот текст.

Ответы [ 3 ]

11 голосов
/ 26 января 2009

Вот код, который я использую.

Это идет в заголовочном файле.

#pragma once

#define MS_VC_EXCEPTION 0x406d1388
#pragma warning(disable: 6312)
#pragma warning(disable: 6322)

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;

inline
void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
{
#ifdef _DEBUG
    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)
    {
    }
#else
    dwThreadID;
    szThreadName;
#endif
}

Тогда я называю это так в темах proc.

SetThreadName(GetCurrentThreadId(), "VideoSource Thread");

Стоит отметить, что это именно тот код, на который Дэвид разместил ссылку (спасибо! Я забыл, где я его получил). Я не удалил этот пост, потому что хотел бы, чтобы код оставался доступным, если MSDN решит реорганизовать свои ссылки (снова).

8 голосов
/ 26 января 2009

Использовать SetThreadName

0 голосов
/ 19 июня 2017

Добавлена ​​Windows 10 SetThreadDescription (), на этой платформе это будет лучший метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...