2013-10-08 9 views
15

Sto eseguendo valgrind in uno script bash e dirigendo l'output di valgrind in un file. Come questo:Come inserire nello script se valgrind ha riscontrato perdite di memoria?

valgrind --leak-check=full --show-reachable=yes --xml=yes --xml-file=unit_tests_valgrind.out.xml ./unit_tests_runner 

Il RET_VALUE=$? sta per mettere il valore di ritorno del programma (unit_tests_runner sopra), non dal valgrind. E l'unico modo per verificare se il valgrind ha riscontrato problemi di memoria è aprire il log.

C'è un modo per verificare in uno script se ci sono problemi di memoria? Se sì, come?

risposta

19

Sembra che stiate cercando l'opzione --error-exitcode.

Dal momento che il valore predefinito è 0, il codice di ritorno da Valgrind è uguale a quello del processo. Impostare invece su un valore diverso da zero.

Da Valgrind core manual:

--error-exitcode=<number> [default: 0]

Specifica un codice di uscita alternativa per tornare se Valgrind segnalato eventuali errori nella corsa. Se impostato sul valore predefinito (zero), il valore di ritorno di Valgrind sarà sempre il valore di ritorno del processo simulato. Se impostato su un valore diverso da zero, tale valore è restituito, se Valgrind rileva eventuali errori. Questo è utile per utilizzando Valgrind come parte di una suite di test automatizzata, dal momento che rende facile da rilevare casi di test per i quali Valgrind ha segnalato errori, solo esaminando i codici di ritorno.

+0

sì, questo è quello che stavo cercando. Grazie –

+0

Sono io o l'impostazione '' su -1 non funziona per me, sembra che debba essere più grande di 0? – chutsu

+4

'--leak-check = full' o' yes' è fondamentale per '--error-exitcode' per comportarsi come previsto (a seconda del caso d'uso). Senza di esso, gli errori di perdita verranno eliminati e non riportati nel codice di uscita (valgrind 3.10 non li segnala nemmeno come soppressi). – jtpereyda

Problemi correlati