2010-01-06 3 views
6

Sto cercando di ottenere lo stack backtrace di un processo in esecuzione (PID e percorso binario sono noti) da un altro programma. Il programma in questione è scritto in C++ e compilato con g ++ con simboli di debug di gdb.Ottieni lo stack backtrace di un processo in esecuzione

Sto cercando una libreria ++ che funziona su Linux, HP-UX e Solaris che produce un output simile all'uscita di chiamare popen() con qualcosa di simile C o C:

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

I ho trovato lsstack (http://sourceforge.net/projects/lsstack/), che è solo Linux e conosco il programma pstack per Solaris.

Qualcuno sa di un modo affidabile di fare questo cross Unix/POSIX?

+0

C'è anche l'utilità 'gstack' su Linux, che funziona chiamando gdb simile al precedente. – mark4o

risposta

2

È necessario libunwind

+0

Grazie! libunwind-ptrace sembra molto promettente. – jsc