2011-06-08 17 views
8

Tengo un gran programa para ejecutar. El uso de valgrind toma horas y horas para ejecutarse. Escuché que hay algo en lo que podemos llamar valgrind para una función específica en el programa. Y el resto del programa se ejecutará normalmente (sin valgrind env). ¿Alguien puede ayudarme con esto? Intenté buscarlo en Internet, puede ser que me falta el término para buscar.Restricción Valgrind a una función específica

Respuesta

8

Todo depende de la herramienta que está queriendo utilizar. Para callgrind (el generador de perfiles en valgrind) hay una opción --toggle-collect = function para permitirle recopilar información dentro de una función en particular y todos sus elementos secundarios.

Sin embargo, si la herramienta que le interesa es memcheck (para capturar fugas/errores de memoria), entonces no hay una opción de línea de comando disponible.

1

googlear "perfil valgrind función específica única" e ir "Me siento afortunado"

Además de permitir la instrumentación, también debe habilitar la recopilación de eventos para las partes de su programa le interesa. Por Por defecto, la recolección de eventos está habilitada en todas partes. Puede limitar la recopilación a una función específica utilizando --toggle-collect = function. Esto hará alternar el estado de la colección al ingresar y abandonar las funciones especificadas. Cuando esta opción está activa, el estado de recopilación predeterminado al inicio del programa es "off". Solo se recopilarán los eventos que suceden mientras se ejecuta dentro de la función dada. Las llamadas recursivas de la función dada no desencadenan ninguna acción.

Más here

+2

Eso es de la documentación de ** callgrind **, que es una herramienta que se ejecuta bajo valgrind. Sin embargo, supongo que la pregunta fue sobre memcheck, que es la herramienta valgrind más común. No creo que haya algo así para memcheck. – mark4o

Cuestiones relacionadas