gdb如何获取线程名称显示

在我的应用程序中创build了很multithreading。 一些线程名在gdb中可见,而我执行命令'info threads',其他的则不显示。 如何获取所有的线程名称本身,而不是hex值,如0xb7fe1424

4 Thread 0xb68ffb70 (LWP 18377) 0xb7fe1424 in __kernel_vsyscall () * 3 Thread 0xb7291b70 (LWP 18375) JKMainT (arg=0x0) at mylib.cpp:482 2 Thread 0xb7a92b70 (LWP 18374) 0xb7fe1424 in __kernel_vsyscall () 1 Thread 0xb7a94730 (LWP 18371) 0xb7fe1424 in __kernel_vsyscall () 

Solutions Collecting From Web of "gdb如何获取线程名称显示"

线程默认没有名字 – JKMainT字符串里有当前函数的名字。

尝试选择一个线程并查看回溯 – 这可能会给你一个好主意,它是线程。 否则,如果PR_SET_NAME可用,则可以尝试使用prctl 。

如果升级到gdb 7.3或更高版本,“info thread”将显示线程名称; 至少在本地(而不是远程)Linux上。

您可以通过非标准的POSIX API调用来设置线程名称。 GDB(和其他调试器)将显示这些名称。

在Linux上

 // watch out, 16 char limit on the name pthread_setname_np(pthread_self(), "My thread name"); 

在Mac上

 pthread_setname_np("My thread name");