2008-09-16 2 views

Répondre

50
 
$ gdb --pid=26426 
(gdb) gcore 
Saved corefile core.26426 
(gdb) detach 
+5

Vous n'avez pas besoin de définir ulimit -c unlimited car gdb ne le respecte pas (gdb devrait toujours vous donner le fichier core complet). Vous pouvez également le faire en utilisant la commande 'gcore pid' du cli sans exécuter gdb. – psanford

39

Ou courir gcore $(pidof processname).

Cela a l'avantage (par rapport à l'exécution de commandes gdb et d'émission à la CLI) que vous attachez et détachez dans les plus brefs délais.

0

Remarque: La méthode suivante met fin au processus en cours & requiert également les symboles.

Vous pouvez envoyer un des signaux suivants (avec action = noyau) au processus en cours d'exécution:
De: http://man7.org/linux/man-pages/man7/signal.7.html

 Signal  Value  Action Comment 
     ────────────────────────────────────────────────────────────────────── 
     SIGHUP  1  Term Hangup detected on controlling terminal 
            or death of controlling process 
     SIGINT  2  Term Interrupt from keyboard 
     SIGQUIT  3  Core Quit from keyboard 
     SIGILL  4  Core Illegal Instruction 
     SIGABRT  6  Core Abort signal from abort(3) 
     SIGFPE  8  Core Floating point exception 
     SIGKILL  9  Term Kill signal 
     SIGSEGV  11  Core Invalid memory reference 
     SIGPIPE  13  Term Broken pipe: write to pipe with no 
            readers 
     SIGALRM  14  Term Timer signal from alarm(2) 
     SIGTERM  15  Term Termination signal 
     SIGUSR1 30,10,16 Term User-defined signal 1 
     SIGUSR2 31,12,17 Term User-defined signal 2 
     SIGCHLD 20,17,18 Ign  Child stopped or terminated 
     SIGCONT 19,18,25 Cont Continue if stopped 
     SIGSTOP 17,19,23 Stop Stop process 
     SIGTSTP 18,20,24 Stop Stop typed at terminal 
     SIGTTIN 21,21,26 Stop Terminal input for background process 
     SIGTTOU 22,22,27 Stop Terminal output for background process 

comme ceci:
kill <signal> <pid>

Et une fois que vous avez la core, vous pouvez ouvrir dans gdb avec le fichier de symbole.

0

Vous pouvez utiliser la commande generate-core-file dans gdb pour générer une sauvegarde de base du processus en cours.

Questions connexes