9 Stimmen

So ändern Sie den Namen eines Themas

Ich habe eine Serveranwendung, die "eine Menge" von Threads verwendet. Ohne in einen Streit darüber verwickelt werden zu wollen, wie viele Threads wirklich verwendet werden sollten, wäre es schön, im Debugger-Fenster "Threads" einen beschreibenden Text zu sehen, der beschreibt, was die einzelnen Threads sind, ohne dass man sich durchklicken und aus dem Kontext herausfinden muss, was es ist.

Sie haben alle dieselbe Startadresse, so dass im Thread-Fenster in der Regel etwas wie "thread_base::start" oder etwas Ähnliches steht. Ich würde gerne wissen, ob es einen API-Aufruf oder etwas anderes gibt, mit dem ich diesen Text anpassen kann.

11voto

Jere.Jones Punkte 9577

Hier ist der von mir verwendete Code.

Dies gehört in eine Header-Datei.

#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
}

Dann rufe ich es wie folgt innerhalb der Threads proc.

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

Es ist erwähnenswert, dass dies genau der Code ist, zu dem David einen Link gepostet hat (Danke! Ich hatte vergessen, woher ich ihn hatte). Ich habe diesen Beitrag nicht gelöscht, weil ich möchte, dass der Code immer noch verfügbar ist, falls MSDN beschließt, seine Links (wieder) umzustrukturieren.

8voto

David Norman Punkte 18770

Utilisez SetThreadName

0voto

Chris Guzak Punkte 113

Windows 10 hinzugefügt SetThreadDescription (), auf dieser Plattform wird dies die beste Methode sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X