是否有可能獲得gdb或使用其他工具來創建正在運行的進程的核心轉儲,它是符號表?如果有一種方法可以在不終止流程的情況下做到這一點,那就太好了。是否有可能獲得正在運行的進程的核心轉儲及其符號表?
如果這是可能的,你會使用什麼命令? (我試圖在Linux上執行此操作)
是否有可能獲得gdb或使用其他工具來創建正在運行的進程的核心轉儲,它是符號表?如果有一種方法可以在不終止流程的情況下做到這一點,那就太好了。是否有可能獲得正在運行的進程的核心轉儲及其符號表?
如果這是可能的,你會使用什麼命令? (我試圖在Linux上執行此操作)
$ gdb --pid=26426 (gdb) gcore Saved corefile core.26426 (gdb) detach
或運行gcore $(pidof processname)
。
這有利於(超過運行gdb並向CLI發佈命令),您可以在最短的時間內附加和分離它。
注意:以下方法將終止運行過程&也需要符號。
您可以發送以下信號之一(用行動=核)到正在運行的進程:
來源: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
像這樣:
kill <signal> <pid>
一旦你有核心,你可以在gdb和符號文件中打開。
您可以在gdb中使用generate-core-file
命令生成運行進程的核心轉儲。
你不需要設置ulimit -c unlimited,因爲gdb不尊重它(gdb應該總是給你整個核心文件)。您也可以使用gi命令`gcore pid`來執行此操作,而無需運行gdb。 – psanford 2012-06-13 21:21:34