2008-11-19 10 views
21

Tengo un proceso x que deseo verificar si hay fugas con valgrind. El problema es que x se ejecuta por y, y y a su vez se ejecuta por z. No puedo correr x independiente porque y y z configurar el entorno de x, tales como variables de entorno, interruptores de línea de comandos, archivos necesarios para x etc.¿Cómo le cuento valgrind a los procesos bifurcados de Memcheck?

  1. ¿Hay alguna manera de que pueda decirle valgrind para ejecutarse en z pero para seguir cualquier bifurcación, ¿encuentra e informa también?
  2. ¿Hay alguna forma en que pueda decir valgrind que siga cualquier bifurcación pero solo informe sobre el proceso llamado x?
  3. ¿Hay alguna manera en que pueda decir valgrind para adjuntar al proceso que ya se está ejecutando, de la manera en que puedo hacerlo con gdb?

No sé si esto importa, pero estoy ejecutando bajo SuSE64 linux y valgrind-2.4.0.

Gracias!

Respuesta

28
  1. Valgrind sigue los procesos bifurcados cuando se le da la opción --trace-children=yes.
  2. Debería poder lograrlo mediante el uso de filtros adecuados.
  3. No. Valgrind se engancha en el código de carga del módulo utilizando LD_PRELOAD, por lo que no es posible adjuntarlo a un proceso en ejecución.
+6

Valgrind * usó * para usar LD_PRELOAD, pero no lo hace en las versiones actuales. Su respuesta a 3. sigue siendo correcta, pero la razón no tiene nada que ver con LD_PRELOAD. –

+0

Interesante. Gracias por corregirme. – JesperE

+1

cuando usa trace-childen, ¿no necesita especificar --depth de lo contrario, dejará de monitorear las horquillas de las horquillas? – DEzra

Cuestiones relacionadas