在我给出命令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
名称
答案 0 :(得分:0)
如果你想看线程5:
(gdb) thread 5
(gdb) bt
将显示该线程的调用堆栈。