Est-il possible d'obtenir un dump central d'un processus en cours d'exécution et de sa table de symboles?
Question
Est-il possible d’obtenir gdb ou d’utiliser d’autres outils pour créer un dump central d’un processus en cours d’exécution et de sa table des symboles? Ce serait bien s'il y avait un moyen de faire cela sans mettre fin au processus.
Si cela est possible, quelles commandes utiliseriez-vous? (J'essaie de faire cela sur une machine Linux)
La solution
$ gdb --pid=26426 (gdb) gcore Saved corefile core.26426 (gdb) detach
Autres conseils
Ou exécutez gcore $(pidof processname)
.
Cela présente l'avantage (par rapport à l'exécution de gdb et à l'envoi de commandes à la CLI) que vous attachez et détachez dans les plus brefs délais.
Remarque: la méthode suivante met fin au processus en cours & amp; nécessite également les symboles.
Vous pouvez envoyer l'un des signaux suivants (avec action = core) 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 ça:
kill <signal> <pid>
Et une fois que vous avez le noyau, vous pouvez ouvrir gdb avec le fichier de symboles.
Vous pouvez utiliser generate-core-file
la commande de gdb pour générer le dump principal du processus en cours.