È possibile ottenere un core dump di un processo in esecuzione e la sua tabella dei simboli?

StackOverflow https://stackoverflow.com/questions/68160

  •  09-06-2019
  •  | 
  •  

Domanda

È possibile ottenere gdb o utilizzare altri strumenti per creare un core dump di un processo in esecuzione e la sua tabella dei simboli?Sarebbe fantastico se ci fosse un modo per farlo senza interrompere il processo.

Se ciò fosse possibile, quali comandi utilizzeresti?(Sto provando a farlo su una macchina Linux)

È stato utile?

Soluzione

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

Altri suggerimenti

Oppure corri gcore $(pidof processname).

Questo ha il vantaggio (rispetto all'esecuzione di gdb e all'invio di comandi alla CLI) di collegare e scollegare nel più breve tempo possibile.

Nota: Il seguente metodo terminerà il processo in esecuzione e richiederà anche i simboli.

Puoi inviare uno dei seguenti segnali (con action=core) al processo in esecuzione:
Da: 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

Così:
kill <signal> <pid>

E una volta ottenuto il core, puoi aprirlo in gdb insieme al file dei simboli.

Puoi usato generate-core-file comando in gdb per generare core dump del processo in esecuzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top