2010-01-06 3 views
6

J'essaie d'obtenir la trace d'une pile d'un processus en cours (les chemins PID et binaire sont connus) d'un autre programme. Le programme en question est écrit en C++ et compilé avec g ++ avec les symboles de débogage gdb.Récupère la trace d'une pile d'un processus en cours

Je suis à la recherche d'un C ou C++ bibliothèque qui fonctionne sur Linux, HP-UX et Solaris qui produit une sortie similaire à la sortie de l'appel popen() avec quelque chose comme ceci:

gdb -batch -x /dev/stdin <BINARY> <PID> << EOF 
thread apply all bt 
EOF 

I J'ai trouvé lsstack (http://sourceforge.net/projects/lsstack/), qui est uniquement Linux et qui connaît le programme pstack pour Solaris.

Quelqu'un connaît-il un moyen fiable de faire ce cross Unix/POSIX?

+0

Il y a aussi l'utilitaire 'gstack' sur Linux, qui fonctionne en appelant gdb similaire à ce qui précède. – mark4o

Répondre

2

Vous devez libunwind

+0

Merci! libunwind-ptrace semble très prometteur. – jsc

Questions connexes