Sto eseguendo un demone in Linux e voglio eseguire questo daemon sotto valgrind per trovare errori relativi alla memoria. Dato che è un demone, ho bisogno di usare l'opzione --trace-children=yes
, ma questo genera molti processi più tardi durante la sua vita e non voglio che vengano eseguiti con valgrind. C'è un modo per escludere certi bambini dall'esecuzione con valgrind?Come escludere determinati processi figlio da eseguire con valgrind?
risposta
La versione attualmente rilasciata (valgrind 3.5.0) non ha alcuna opzione per rintracciare alcuni ma non tutti i bambini. Tuttavia, se si è disposti a utilizzare the latest code from the SVN repository, contiene una new option--trace-children-skip
per questo scopo:
--trace-children-skip=patt1,patt2
Questa opzione ha effetto solo quando viene specificato
--trace-children=yes
. Permette di saltare alcuni bambini. L'opzione accetta un elenco di modelli separati da virgole per i nomi dei file eseguibili figlio in cui Valgrind non deve eseguire il tracciamento. I modelli possono includere i metacaratteri?
e*
, che hanno il solito significato.Questo può essere utile per l'eliminazione di rami non interessanti da un albero di processi in esecuzione su Valgrind. Ma dovresti stare attento quando lo usi. Quando Valgrind salta la traccia in un file eseguibile, non salta solo il tracciamento di quell'eseguibile, ma salta anche il tracciamento dei processi figli di quell'eseguibile. In altre parole, il flag non si limita a far sì che la traccia si fermi agli eseguibili specificati, ma salta la traccia di interi sottoprodotti del processo radicati in uno qualsiasi dei file eseguibili specificati.
Il metodo più vecchio è quello di omettere --trace-children=yes
, e per i bambini che si vuole tracciare, sostituirli con uno script banale che esegue il programma vero e proprio sotto valgrind:
#!/bin/sh
exec valgrind --log-file=myprog.vg.%p myprog-real "[email protected]"
Anche con la nuova opzione, questo tipo di script può essere utile se si dispone di es un nipote che vuoi tracciare sotto valgrind ma vuoi saltare il suo genitore.
- 1. Come escludere determinati file da un svn diff?
- 2. Come escludere determinati file requireJS da uglifying/optimizing
- 3. Elaborazione di processi figlio da Perl
- 4. come riavviare solo determinati processi usando supervisorctl?
- 5. Condivisione di porte Mach con processi figlio
- 6. Come escludere record con determinati valori in sql selezionare
- 7. fork() e wait() con due processi figlio
- 8. supervisione arrestando i processi figlio
- 9. È possibile eseguire Visual Studio per eseguire il debug di processi figlio come WinDBG?
- 10. Come limitare i processi figlio di Jenkins?
- 11. Script PHP da eseguire in determinati orari
- 12. fork() processi figlio e genitore
- 13. Come eliminare tutti i processi figlio all'uscita?
- 14. Escludere determinati nodi quando si inoltrano lavori con qsub/coppia?
- 15. fork() e STDOUT/STDERR alla console da processi figlio
- 16. Come eseguire valgrind con l'esempio di base c?
- 17. Come escludere da zipgroupfileset?
- 18. Selezionare nodeValue ma escludere elementi figlio
- 19. Come escludere determinati moduli da una build Maven utilizzando la riga di comando
- 20. Come posso passare un socket dai processi padre a figlio
- 21. Come escludere ClientAbortException da SimpleMappingExceptionResolver
- 22. : eliminazione di processi figlio in Windows
- 23. Come eseguire i processi convogliati con bash su più core?
- 24. Golang: I processi figlio diventano Zombi
- 25. valgrind on server process
- 26. Escludere determinati intervalli di versioni di dipendenza in setuptools/pip
- 27. Come fork() n processi figlio correttamente in C?
- 28. Escludere determinati percorsi dal rapporto di copertura di Devel :: Cover
- 29. Restituire determinati campi con .populate() da Mongoose
- 30. Attesa del genitore per tutti i processi figlio
Mark, grazie per la risposta. Ma ho trovato un modo più semplice! C'è un'opzione --trace-children-skip che fa esattamente quello che volevo. È disponibile solo in svn trunk, non in nessuna versione di rilascio. "--trace-children-skip = */sed, */expr, */xgcc, */cat, */rm, */stty" – kumar
Fantastico! Ho usato l'altro modo per anni; è bello vedere questo è stato aggiunto. Ho aggiunto queste informazioni alla risposta. – mark4o