筆記:Ubuntu產生Core dump
1. 產生執行中程序的Core Dump
gcore -o {output dump file} {process id}
輸出的檔案名稱-o指定的檔名,加上process id作為副檔名
$ gcore -o chrome_dump 8283
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
warning: Target and debugger are in different PID namespaces; thread lists and other data are likely unreliable
pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
225 ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: No such file or directory.
Saved corefile chrome_dump.8283
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
warning: Target and debugger are in different PID namespaces; thread lists and other data are likely unreliable
pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
225 ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: No such file or directory.
Saved corefile chrome_dump.8283
2. 強制停止程序讓系統產生Core dump
kill -6 {process ID}-6是SIGABRT信號,可讓process中止,如果沒效,可嘗試SIGSYS(-31)或是SIGXCPU(-24)信號
參考資料:
https://www.ibm.com/support/knowledgecenter/en/SSYKE2_9.0.0/com.ibm.java.multiplatform.90.doc/diag/tools/obtaining_dump_hung_jvm.html
如果沒有在工作目錄下產生core或coredump,表示需要暫時解除限制
暫時不限制
ulimit -c unlimited
查看目前的限制狀態,若為0表示不dump,Ubuntu就是預設為0
ulimit -c
其他ulimit選項
3. gdb查看執行檔的core dump
gdb {program file} {core file}program file是你的執行檔位置
core file是core dump產生出來的檔案位置
參考資料:http://www.network-theory.co.uk/docs/gccintro/gccintro_38.html
4. 產生執行中的Java程式dump資訊
jstack -m {process ID}
5. jstack查看Java的core dump
jstack {jvm java} {core file}第一個參數是執行該java程式時用的jvm, 例如${JAVA_HOME}/bin/java
第二個參數是是core dump產生出來的檔案
參考資料:
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html#CHDHDCJD
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr016.html#BABFDFDH
6. Android APP產生Trace資訊
kill -3 {process ID}
Dalvikvm會接受SIGQUIT產生所有process的stack trace資訊,原本這是為了查ANR所做的。
儲存Trace的路徑預設是使用系統property的dalvik.vm.stack-trace-file,例如/data/anr/traces.txt
一般會搭配ps -t
參考資料:
http://rayleeya.iteye.com/blog/1955657
留言