2016-06-12 44 views
2

我与线程和我的线程(S)的一个(或多个)的工作是/是卡住,永远不会结束。问题是我找不到哪一个。如何找到哪个线程被卡

所以我想知道是否有一种方法可以找到它的ID,与Linux命令PS中显示的ID相同。如果没有办法,我怎么能找到哪个线卡?

观测数据:已经检查了pthread_self(),它是不是我要找的。

+0

'ps'也不是没有特殊的开关上市线程。你确定你想要线程而不是进程吗? –

+0

请参阅以下信息:http://stackoverflow.com/help/mcve – Elyasin

+0

@EugeneSh。我想是这样的......当我用字符'&'编译时,能够给出'PS'命令,并且我可以看到我的可执行文件在那里列出了一个pid。我只是想知道是否有办法找到哪个线程被卡住了...... – PlayHardGoPro

回答

4

使用GDB调试器,我们可以找出哪些线程处于阻塞状态。

  1. 首先尝试使用调试符号编译代码。
  2. gdb your_file_executable
  3. 把一些破发点(你会知道在哪里放置BP完全一致)
  4. info threads

“信息线”将给出有关这催生/运行的线程的信息。 w^

+1

另一个我觉得有用的命令是'thread apply all bt' - 它打印每个线程的堆栈跟踪,让您可以轻松地找到卡住的一个。 –

相关问题