Estoy ejecutando un daemon en Linux y quiero ejecutar este daemon en valgrind para encontrar errores relacionados con la memoria. Como es un daemon, necesito usar la opción --trace-children=yes
, pero esto genera muchos procesos más adelante durante su ciclo de vida y no quiero que se ejecuten bajo valgrind. ¿Hay alguna forma de excluir a ciertos niños de correr bajo valgrind?Cómo excluir ciertos procesos secundarios para que se ejecuten en valgrind?
Respuesta
La versión actualmente publicada (valgrind 3.5.0) no tiene la opción de rastrear algunos, pero no todos los elementos secundarios. Sin embargo, si usted está dispuesto a utilizar the latest code from the SVN repository, que contiene una new option--trace-children-skip
para este propósito:
--trace-children-skip=patt1,patt2
Esta opción sólo tiene efecto cuando se especifica
--trace-children=yes
. Permite que algunos niños sean salteados. La opción toma una lista de patrones separados por comas para los nombres de ejecutables secundarios que Valgrind no debe rastrear. Los patrones pueden incluir los metacaracteres?
y*
, que tienen el significado habitual.Esto puede ser útil para podar ramas no interesantes de un árbol de procesos que se ejecutan en Valgrind. Pero debes tener cuidado cuando lo uses. Cuando Valgrind omite el rastreo en un archivo ejecutable, no solo omite el rastreo de ese archivo ejecutable, sino que también omite el rastreo de cualquiera de los procesos secundarios de ese ejecutable. En otras palabras, el indicador no solo hace que el seguimiento se detenga en los archivos ejecutables especificados: omite el rastreo de subárboles de proceso enteros enraizados en cualquiera de los ejecutables especificados.
El método más antiguo es omitir --trace-children=yes
, y para los niños que no desea rastrear, reemplazarlos con un guión trivial que se ejecuta el programa real bajo valgrind:
#!/bin/sh
exec valgrind --log-file=myprog.vg.%p myprog-real "[email protected]"
Incluso con la nueva opción, este tipo de script puede ser útil si tiene, por ejemplo, un nieto que desea rastrear en valgrind pero quiere omitir su padre.
- 1. fork() procesos secundarios y secundarios
- 2. Esperando en PowerShell para que finalicen todos los procesos secundarios
- 3. ¿Cómo se enumeran todos los procesos secundarios en python?
- 4. cómo reiniciar solo ciertos procesos usando supervisorctl?
- 5. ¿Cómo encontrar todos los procesos secundarios?
- 6. cómo matar procesos y procesos secundarios de python?
- 7. excluir ciertos nodos secundarios cuando la estructura de datos es desconocida
- 8. ¿Cómo usar Fork() para crear solo 2 procesos secundarios?
- 9. ¿Cómo le cuento valgrind a los procesos bifurcados de Memcheck?
- 10. Ordenar hilos para que se ejecuten en el orden en que se crearon/iniciaron
- 11. Python en Windows: ¿cómo esperar varios procesos secundarios?
- 12. fork() y wait() con dos procesos secundarios
- 13. Encontrar el número de procesos secundarios
- 14. ¿Cómo desactivo los bloques END en procesos secundarios?
- 15. Procesos Zombie que aparecen cuando genero procesos
- 16. ¿Cómo puedo hacer que mi script de Perl use múltiples núcleos para procesos secundarios?
- 17. ¿Cómo puedo asegurar que los scripts se ejecuten usando javax.scripting?
- 18. ¿Cómo puedo hacer que Perl espere a que los procesos secundarios se inicien en segundo plano con system()?
- 19. Tener Supervisord Reiniciar periódicamente procesos secundarios
- 20. Cómo excluir ciertos directorios/archivos de git grep search
- 21. Adjuntar automáticamente depurador vs2005 a procesos secundarios
- 22. Cómo esperar la salida de procesos no secundarios
- 23. ¿Cómo definir trabajos en Jenkins/Hudson para que se ejecuten en paralelo?
- 24. ¿Es posible que Encog o Neuroph se ejecuten en Android?
- 25. Excluir ciertos elementos de la selección en XPath
- 26. Excluir que HttpModule se ejecute para contenido estático en IIS7
- 27. Java ProcessBuilder process.destroy() no mata procesos secundarios en winXP
- 28. Excluir completamente ciertos directorios del proyecto CDT de Eclipse
- 29. Mongodb: incluir o excluir ciertos elementos con el controlador C#
- 30. desove ya la espera de los procesos secundarios en Python
Mark, gracias por la respuesta. ¡Pero encontré una manera más fácil! Hay una opción --trace-children-skip que hace exactamente lo que yo quería. Solo está disponible en svn trunk, no en ninguna versión de lanzamiento. "--trace-children-skip = */sed, */expr, */xgcc, */cat, */rm, */stty" – kumar
¡Genial! He estado usando el otro lado durante años; es bueno ver que esto se está agregando. He agregado esta información a la respuesta. – mark4o