2016-06-12 43 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' - 它打印每個線程的堆棧跟蹤,讓您可以輕鬆地找到卡住的一個。 –

相關問題