La suppression du processus valgrind lui-même ne laisse aucun rapport sur l'exécution du processus interne.Terminer le processus s'exécutant dans valgrind
Est-il possible d'envoyer un signal de fin à un processus exécuté dans valgrind?
La suppression du processus valgrind lui-même ne laisse aucun rapport sur l'exécution du processus interne.Terminer le processus s'exécutant dans valgrind
Est-il possible d'envoyer un signal de fin à un processus exécuté dans valgrind?
Il n'y a pas de "processus interne" puisque le programme client s'exécute en même temps.
Les signaux envoyés à ce processus seront remis au programme client normalement. Si le signal provoque le terinate, alors les gestionnaires de sortie normaux de valgrind s'exécuteront et (par exemple) signaleront des fuites.
Ainsi, par exemple, si nous commençons à valgrind sur une commande de sommeil:
bericote [~] % valgrind sleep 240
==9774== Memcheck, a memory error detector
==9774== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==9774== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==9774== Command: sleep 240
==9774==
tuer alors cette commande:
bericote [~] % kill -TERM 9774
alors le processus sortir et les gestionnaires de sortie de valgrind se déroulera:
==9774==
==9774== HEAP SUMMARY:
==9774== in use at exit: 0 bytes in 0 blocks
==9774== total heap usage: 30 allocs, 30 frees, 3,667 bytes allocated
==9774==
==9774== All heap blocks were freed -- no leaks are possible
==9774==
==9774== For counts of detected and suppressed errors, rerun with: -v
==9774== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 6 from 6)
[1] 9774 terminated valgrind sleep 240
La seule exception serait pour kill -9
comme dans ce cas le pro Le noyau est tué par le noyau sans jamais être informé du signal, donc Valgrind n'a aucune possibilité de faire quoi que ce soit.
J'ai essayé 'kill -SIGTERM' avant de le demander, mais cela prenait un temps très long pour que valgrind s'arrête (~ 10 min.), Donc je pensais que ça ne marcherait pas. Merci pour votre réponse. –
Le délai est-il le balayage de toute la mémoire allouée essayant de fonctionner s'il y a des fuites - cela peut prendre plus longtemps que normal parce qu'un programme en cours d'exécution est susceptible d'avoir plus de mémoire allouée qu'un normalement. – TomH
Cela n'est pas vrai sous OS X 10.7.5 et valgrind-3.8.1. valgrind sera heureux d'ignorer la mort. –