J'ai un programme défectueux qui, lors de l'exécution, recevez un SIGSEGV.
Je peux utiliser gdb comme ceci: p> mais je préférerais que gdb attrape le SIGSEGV de PROG code> et joignez-le automatiquement. P>
$ ./prog
Segmentation Fault
(gdb) ...
3 Réponses :
Eh bien, vous pouvez toujours créer un fichier de base, puis analyser la pipetack à l'aide de GDB sur ce noyau. Vous pouvez consulter la page d'homme pour Ulimit pour le faire. p>
hmm. Vous pouvez configurer un gestionnaire de signal pour lancer le débogueur avec le processus en cours. De cette façon, vous pouvez inspecter l'état entier "Live".
#include <signal.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> const char *prog=0; void fn(int signum) { char buf[256]; snprintf(buf,255,"ddd %s %d",prog,getpid()); system(buf); } int main(int argc, char **argv) { prog=argv[0]; signal(SIGSEGV,&fn); int *p=0; int k=*p; }
+1 Bon à savoir que vous pouvez attraper ce signal, BTW, vous avez besoin d'une sortie () après le système () de sorte qu'il ne sera pas appelé plus d'une fois.
Le prototype pour FN nécessite un argument entier pour obtenir le code compilé.
Pour ajouter à la réponse du mainframe Vous pouvez relier votre application avec libdebugme (ou simplement ld_preload code> IT) pour réaliser des fonctionnalités similaires. Par exemple: