в Linux, как найти, какой поток находится в состоянии приостановки внутри GDB? - PullRequest
1 голос
/ 05 ноября 2010

У меня есть многопоточная программа, которая имеет ~ 200 потоков, работающих на Linux, я знаю, что это довольно много.ну, это устаревшая программа :) эта программа работает на 2.6.29 с операционной системой Debian, как я могу легко узнать, какой кадр стека потока содержит функцию A?Я использую «поток применять все BT» для отображения обратного следа всех потоков.Однако мне нужно изучить каждый кадр стека, чтобы найти правильный поток, содержащий функцию A.

спасибо!questionchild

1 Ответ

2 голосов
/ 05 ноября 2010

Вы можете сохранить вывод потока , применив все bt к лог-файлу, а затем выполните grep или изучите что-нибудь еще. Также будет полезно отключить нумерацию страниц.

[root@localhost ~]# gdb
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) set logging on
(gdb) set pagination off
(gdb) thread apply all bt
...