在gdb中获取线程名称

时间:2014-02-21 06:06:19

标签: multithreading

在我给出命令info th的gdb中 我得到了输出:

(gdb) info th
  5 Thread 0x7ffff3b54700 (LWP 1542)  0x00007ffff6705343 in poll () from /lib64/libc.so.6
  4 Thread 0x7ffff2752700 (LWP 1544)  0x00007ffff670f163 in epoll_wait () from /lib64/libc.so.6
  3 Thread 0x7ffff3153700 (LWP 1543)  0x00007ffff670f163 in epoll_wait () from /lib64/libc.so.6
  2 Thread 0x7ffff4763700 (LWP 1541)  0x00007ffff69c7930 in sem_wait () from /lib64/libpthread.so.0
* 1 Thread 0x7ffff7fe17e0 (LWP 1520)  0x00007ffff66d2cdd in nanosleep () from /lib64/libc.so.6

我可以断定有5个线程正在运行。但我无法获得线程功能的名称。

如何使用gdb获取线程的函数名?

线程5在poll()暂停执行。但poll()由一个由线程启动的函数调用。 就我而言,我为set_up_socket_to_listen()说了帖子。从'poll'调用的地方。我想打印'set_up_socket_to_listen'

pthread_t l_thread; 
pthread_create(&l_thread, 0, (void *)&set_up_socket_to_listen, NULL); 

我想打印set_up_socket_to_listen名称

1 个答案:

答案 0 :(得分:0)

如果你想看线程5:

(gdb) thread 5
(gdb) bt

将显示该线程的调用堆栈。