2008-09-16 17 views

回答

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

你不需要設置ulimit -c unlimited,因爲gdb不尊重它(gdb應該總是給你整個核心文件)。您也可以使用gi命令`gcore pid`來執行此操作,而無需運行gdb。 – psanford 2012-06-13 21:21:34

39

或運行gcore $(pidof processname)

這有利於(超過運行gdb並向CLI發佈命令),您可以在最短的時間內附加和分離它。

0

注意:以下方法將終止運行過程&也需要符號。

您可以發送以下信號之一(用行動=核)到正在運行的進程:
來源: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和符號文件中打開。

0

您可以在gdb中使用generate-core-file命令生成運行進程的核心轉儲。

相關問題