È possibile generare un core dump senza uccidere il processo? In tal caso, qual è il comando/segnale per farlo?Dump core Linux senza processo di omissione
Grazie, Jim
È possibile generare un core dump senza uccidere il processo? In tal caso, qual è il comando/segnale per farlo?Dump core Linux senza processo di omissione
Grazie, Jim
Vedere il comando 'gcore', parte del GDB.
Ho ottenuto il miglior risultato con il collegamento di gdb in modalità batch al programma in esecuzione, ottenere un backtrace e quindi staccarlo.
gdb --batch --quiet -ex "set pagination off" -ex "thread apply all bt"
-ex "detach" -ex "quit" pid pid_of_process
ma backtrace non è un coredump – osgx
Un metodo per generare un coredump direttamente dal programma senza gdb
è descritto qui: https://unix.stackexchange.com/questions/11185/dump-process-core-without-killing-the-process
ha senso solo se si sta sviluppando. Il principio è di programmare il fork e di sollevare SIGABRT
da child.
Questo sembra promettente. Ho ottenuto il file principale in questo modo. Tuttavia, il processo che sto analizzando termina non appena disconnetto gdb da esso. Termina anche immediatamente se lo tengo straziato. Conosci qualche modo per impedire che venga rilevato da gdb/strace? Grazie ancora! – Jim
È possibile eseguire gcore contro il processo e quindi gdb contro il core scaricato. Ad esempio: "gcore 12345; gdb/path/to/binary core.12345" –