En supposant que vous disposez des autorisations appropriées, vous pouvez associer gdb à n'importe quel processus. Vous pouvez le faire sur la ligne de commande avec:
gdb /path/to/binary _pid_
ou à l'intérieur gdb avec la commande attacher:
attach _pid_
Ainsi, une fois que votre démon a commencé, vous pouvez utiliser l'une de ces techniques pour attacher pour le PID final, votre démon fonctionne comme. La connexion de gdb arrête le processus que vous traquez, vous devrez donc lancer un "continuer" pour le redémarrer.
Je ne connais pas de méthode directe pour que gdb puisse exécuter des commandes arbitraires lorsque le programme se bloque. Voici une solution de contournement que je peux penser:
- Créer et enregistrer un gestionnaires de signal pour SIGSEGV.
- Dites à gdb de ne pas s'arrêter sur ce signal (
handle SIGSEGV nostop
)
- Définissez un point d'arrêt sur la première ligne de votre gestionnaire de signaux.
- Assigner commands to the breakpoint de l'étape 3
http: // stackoverflow.com/questions/17965/générer-un-core-dump-in-linux SO poster sur la production de décharges de base –
@HassanSyed: http://vmlinux.org/jocke/mirror/www.objsw.com/docs/gdb_22.html est un lien mort. – bgoodr