Ist es möglich, einen Core-Dump eines laufenden Prozesses und seine Symboltabelle zu bekommen?
Frage
Ist es möglich, gdb zu erhalten oder einige andere Tools verwenden, um einen Core-Dump eines laufenden Prozesses zu erstellen und es ist Symboltabelle? Es wäre toll, wenn es eine Möglichkeit, dies zu tun, ohne den Prozess zu beenden.
Wenn dies möglich ist, welche Befehle würden Sie nutzen? (Ich versuche, diese auf einer Linux-Box zu tun)
Lösung
$ gdb --pid=26426 (gdb) gcore Saved corefile core.26426 (gdb) detach
Andere Tipps
oder laufen gcore $(pidof processname)
.
Dies hat den Vorteil (über gdb ausgeführt und Befehle an den CLI Ausgabe), die Sie in kürzester Zeit befestigen und lösen.
Hinweis: Die folgende Methode wird den laufenden Prozess beenden und erfordert die Symbole zu
. Sie können eine der folgenden Signale (mit action = Kern) an den laufenden Prozess senden:
Von: 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
Wie so:
kill <signal> <pid>
Und wenn man den Kern hat, können Sie in gdb öffnen zusammen mit der Symboldatei.
Sie können generate-core-file
Befehl in gdb zu erzeugen Core-Dump des laufenden Prozesses verwendet wird.