当在线程命名后附加调试器时,本地c++线程名称不会显示在visual studio线程窗口中

native c++ thread name does not display in visual studio thread window when debugger is attached after the thread is named

本文关键字:线程 显示 窗口 c++ studio visual 调试器 本地      更新时间:2023-10-16

我们的应用程序遵循以下指令在windows上使用本地c++设置线程名。

如果你在线程名设置之前附加线程名,那么在visual studio的线程窗口中可以很好地显示线程名,但是如果你在线程名设置之后附加线程名,那么你只会看到一些默认名称"msvcr120 .dll"。

是否有任何方法可以确保线程名称无论何时附加都将显示?

Windows操作系统中的线程对象没有名称。命名线程纯粹是调试器的一个特性。"设置"线程名称的代码会引发一个MS_VC_EXCEPTION,由调试器捕获,并提供用于调试体验的信息。如果没有调试器,异常过滤器将继续执行。

换句话说:你不能有命名的线程,除非你在调用SetThreadName函数之前附加一个调试器,参见如何:在本机代码中设置线程名称。