debugging - visual - para que sirve el volcado de memoria
¿Es posible obtener un volcado del núcleo de un proceso en ejecución y su tabla de símbolos? (4)
¿Es posible obtener gdb o utilizar algunas otras herramientas para crear un volcado de núcleo de un proceso en ejecución y su tabla de símbolos? Sería genial si hay una manera de hacer esto sin terminar el proceso.
Si esto es posible, ¿qué comandos usarías? (Estoy tratando de hacer esto en una caja de Linux)
O ejecute gcore $(pidof processname)
.
Esto tiene el beneficio (sobre la ejecución de gdb y la emisión de comandos a la CLI) que adjuntar y separar en el menor tiempo posible.
$ gdb --pid=26426 (gdb) gcore Saved corefile core.26426 (gdb) detach
Nota: El siguiente método terminará el proceso en ejecución y también requiere los símbolos.
Puede enviar una de las siguientes señales (con action = core) al proceso en ejecución:
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
Al igual que:
kill <signal> <pid>
Y una vez que tenga el núcleo, puede abrir en gdb junto con el archivo de símbolos.
Puede usar generate-core-file
comando generate-core-file
en gdb para generar el volcado del núcleo del proceso en ejecución.