/ / ¿Hay alguna manera de suprimir el id de proceso en la salida de valgrind? - fugas de memoria, tiempo de ejecución, valgrind

¿Hay alguna forma de suprimir la identificación del proceso en la salida valgrind? - pérdidas de memoria, tiempo de ejecución, valgrind

Tengo dos informes valgrind y quiero diferenciarellos. Con pid en cada línea, diff obviamente encuentra todo lo diferente. Si puedo suprimir el pid en la salida, será más fácil para mí diferenciar. ¿Hay una manera de suprimir el id de proceso en la salida de valgrind?

Fondo:

Mi programa es un simulador que está destinado a sercorriendo para siempre (hasta que se mata manualmente) Después de que haga su inicialización, puedo alimentar los paquetes de red y los procesa. Al usar valgrind, he reducido y arreglado las fugas de memoria que se producen durante el procesamiento de paquetes. Sin embargo, todavía tengo una fuga muy pequeña. Estaba tratando de averiguar si había una manera de restablecer el recuento de fugas de memoria en valgrind en tiempo de ejecución. Si pudiera => después de enviar un paquete, borraría los errores de memoria y solo se informaría de los errores que se producirían en el paso posterior del paquete. Pero no pude averiguar cómo hacer esto.

Entonces, pensé en tomar la diferencia de dos informes de valgrind: uno con 1 paquete y otro con 10 paquetes. Eso debería ayudarme a reducir el culpable.

Si hay una mejor alternativa para resolver esto sin usar diff, ¡hágamelo saber!

Respuestas

0 para la respuesta № 1

No he visto una opción que impida que se imprima el pid, pero estaba buscando una manera de agregar un límite de tiempo a la duración de la ejecución del valgrind, por lo que es posible que lo haya perdido.

Dicho esto, cada línea comienza con "== pid ==" por lo quepodría hacer un prog / script para simplemente quitar esa parte, luego ejecutar diff en lo que queda de cada ejecución. Valgrind no utiliza "=" en ninguna otra parte, así que algo como esto (en c ++) debería funcionar:

string line;
line = fileIN.readline();
int start = line.find_last_of("="); //index of last instance of char
//you need to start one behind the last index
//and end one index before the size
line = line.substr( (start + 1), (line.size() - 1) );

Ahora mismo creo que esa es tu mejor apuesta.


1 para la respuesta № 2

Simplemente use un comando de shell para cortar todo después de la inicial == nnnn ==:

gato valgrind.out | cortar -f2- -d ""> valgrind.cut