2010-01-06 15 views
6

Estoy tratando de obtener la traza inversa de un proceso en ejecución (se conocen PID y ruta binaria) de otro programa. El programa en cuestión está escrito en C++ y compilado con g ++ con símbolos de depuración gdb.Obtener la pila detrás de un proceso en ejecución

Busco una C o C++ biblioteca que funciona en Linux, HP-UX y Solaris que produce una salida similar a la salida de llamar a popen() con algo como esto:

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

I han encontrado lsstack (http://sourceforge.net/projects/lsstack/), que es solo Linux y conoce el programa pstack para Solaris.

¿Alguien sabe de una manera confiable de hacer esto con Unix/POSIX cruzado?

+0

También existe la utilidad 'gstack' en Linux, que funciona llamando GDB similar a la anterior. – mark4o

Respuesta

2

Usted necesita libunwind

+0

Gracias! libunwind-ptrace parece muy prometedor. – jsc

Cuestiones relacionadas