Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何列出线程以及它';它在GDB中具有适当的功能。?_Linux_Multithreading_Gdb - Fatal编程技术网

Linux 如何列出线程以及它';它在GDB中具有适当的功能。?

Linux 如何列出线程以及它';它在GDB中具有适当的功能。?,linux,multithreading,gdb,Linux,Multithreading,Gdb,借助“信息线程”命令我可以知道线程id和当前正在执行的线程。当我有一个或两个线程时,我可以提醒每个线程的函数。基于此,我可以执行我想要的线程。但是当我使用多个线程并且我想执行一个特定的函数时,我需要记住所有函数,以便我可以给出适当的线程id来执行。不可能提醒所有线程及其函数名。那么,有没有办法在GDB中列出线程及其函数名 谢谢你 找到了一些链接。它们似乎很有用: 您可以使用线程应用所有bt命令。它将打印所有线程的回溯。您将在每个回溯路径的末尾附近和系统调用之前找到线程函数名。我按Ctrl+

借助“信息线程”命令我可以知道线程id和当前正在执行的线程。当我有一个或两个线程时,我可以提醒每个线程的函数。基于此,我可以执行我想要的线程。但是当我使用多个线程并且我想执行一个特定的函数时,我需要记住所有函数,以便我可以给出适当的线程id来执行。不可能提醒所有线程及其函数名。那么,有没有办法在GDB中列出线程及其函数名


谢谢你

找到了一些链接。它们似乎很有用:


您可以使用
线程应用所有bt
命令。它将打印所有线程的回溯。您将在每个回溯路径的末尾附近和系统调用之前找到线程函数名。

我按Ctrl+L清除屏幕缓冲区

set height 0
thread apply all bt

这将为所有线程转储回溯,但如果列表很长,则不会暂停(因为我们将窗口高度设置为0)。然后,我将输出复制/粘贴到文本编辑器中进行检查。

“thread apply all bt”命令将仅显示当前执行线程的函数名。我需要的是具有每个函数名的所有线程。@Ravichandran.GES,不应显示所有回溯。当您查看回溯时,可能只有一个线程。
info threads
的输出是什么?不,我正在创建3个线程。info threads显示3个线程信息,并且只显示一个线程的函数名。对于其他线程,它不显示名称。如下输出(gdb)info thread[新线程0xb75feb40(LWP 17418)]Id Target Id Frame 3线程0xb75feb40(LWP 17418)“a.out”0xb7ef0d28 in clone()来自/lib/i386 linux gnu/libc.so.6*2线程0xb7dffb40(LWP 17417)“a.out”print()来自线程c:15 1线程0xb7e006c0(LWP 17416)“a.out”0xb7ef0d28 in clone(),来自/lib/i386 linux gnu/libc.so.6