ShowThreadNames
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
[Motivation] This tool is designed to test the usage of the SetThreadDescription WinAPI in Chrome. In Chrome, the SetThreadDescription API has been enabled to set thread names. However, since there is no tool support to retrieve thread names set by GetThreadDescription, we'll still rely on SetNameInternal function in platform_thread_win.cc to set thread names. Despite this, we need a tool to demo the SetThreadDescription API works, even without the debugger to be present. The problem setting can be referred to https://bugs.chromium.org/p/chromium/issues/detail?id=684203 This tool incorporates the GetThreadDescription API trying to get names of all threads in a process specified by its ID. If the thread names have been set by SetThreadDescription API call like in Chrome, all thread ID/name pairs are returned. [Requirement] Since SetThreadDescription/GetThreadDescription APIs are brought in Windows 10, version 1607, this tool can only be effective if running in this version or later ones. [How to use it] Please download the three files (.cc, .sln, .vcxproj) and compile the code in Visual Studio. Run "ShowThreadNames.exe" either from the build directory or from Visual Studio. No parameters are needed. This tool allows interaction with the user. Once launched, it will show "Please enter the process Id, or "quit" to end the program :" on the terminal. Simply type in the ID of any Chrome process you are interested in, and you will get output like below: thread_ID thread_name 12116 10292 6532 6928 2488 11304 2256 AudioThread 9308 BrokerEvent 5668 BrowserWatchdog 8280 Chrome_HistoryThread 7472 Chrome_IOThread 6336 Chrome_ProcessLauncherThread 12212 CompositorTileWorker1/12212 3628 CrBrowserMain 6472 DnsConfigService 1980 IndexedDB 10560 TaskSchedulerBackgroundBlockingWorker0 11464 TaskSchedulerBackgroundWorker0 3156 TaskSchedulerForegroundBlockingWorker5 7660 TaskSchedulerForegroundWorker0 8216 TaskSchedulerServiceThread 11088 VideoCaptureThread The threads are sorted by their names. Note that some threads have no names in this example. If checking them using Visual Studio debugger, it is found that they are ntdll.dll!WorkerThreads.