2010-11-05 21 views
1

J'ai un programme multi-thread qui a ~ 200 threads fonctionnant sous Linux, je sais que c'est un peu beaucoup. Eh bien, c'est un programme hérité :) ce programme fonctionne sur 2.6.29 avec debian OS comment puis-je facilement trouver quel cadre de pile de thread contient comme fonctionA? J'utilise "thread apply all bt" pour afficher tous les backtraces des threads. Cependant, j'ai besoin d'examiner chaque cadre de pile pour trouver le fil correct qui contient functionA.dans Linux, comment trouver quel thread est en état de suspension à l'intérieur de gdb?

merci! questionchild

Répondre

2

Vous pouvez enregistrer la sortie de thread appliquer tous bt au fichier journal, puis le grep ou examiner d'une autre manière. Aussi, il sera utile de désactiver la pagination.

[[email protected] ~]# 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 
+0

c'est ce que je fais ... je pensais qu'il y aurait d'autres façons de le trouver. peut être une commande dans gdb ou d'autres outils. – user497977