tuto:linux:core_dump
Dans /etc/sysctl.conf :
kernel.core_pattern = %e.core
ulimit -c unlimited
Et pour rendre les changement effectifs :
sysctl kernel/core_pattern=%e.core
- %% Le caractere %
- %p PID du processus dumpe
- %u UID reel du processus dumpe
- %g GID reel du processus dumpe
- %s Numero du signal ayant provoque le dump
- %t Heure du dump (secondes depuis le 1er janvier 1970, 00H00)
- %h Nom d'hote (pareil que 'nodename' renvoye par uname(2))
- %e Nom du fichier executable
Si vous n'avez pas sysctl :
echo "%e.core" | sudo tee /proc/sys/kernel/core_pattern
On se reconnecte et on teste :
zsh: abort (core dumped) ./core snow-sip > gdb vxmld /var/snowshore/log/core warning: .dynamic section for "/lib/tls/libpthread.so.0" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations warning: .dynamic section for "/lib/tls/librt.so.1" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations warning: .dynamic section for "/usr/lib/libxml2.so.2" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations warning: .dynamic section for "/lib/tls/libc.so.6" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations warning: .dynamic section for "/lib/ld-linux.so.2" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations warning: .dynamic section for "/usr/lib/libz.so.1" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations warning: .dynamic section for "/lib/tls/libm.so.6" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations 379 ScSipTransport.c: No such file or directory. GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1". Core was generated by `sipd -c 500 -l 500'. Program terminated with signal 11, Segmentation fault. Reading symbols from /lib/tls/libpthread.so.0...done. Loaded symbols for /lib/tls/libpthread.so.0 Reading symbols from /lib/tls/librt.so.1...done. Loaded symbols for /lib/tls/librt.so.1 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/tls/libc.so.6...done. Loaded symbols for /lib/tls/libc.so.6 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /lib/tls/libm.so.6...done. Loaded symbols for /lib/tls/libm.so.6 Reading symbols from /lib/libnss_files.so.2...done. Loaded symbols for /lib/libnss_files.so.2 #0 0x0808f7f5 in ScSipXSResend (pstTimer=0x854f068, pvTimerData=0x86ffb18, bRetriesExhausted=1 '\001') at ScSipTransport.c:379 in ScSipTransport.c
(gdb) where #0 0x0808f7f5 in ScSipXSResend (pstTimer=0x854f068, pvTimerData=0x86ffb18, bRetriesExhausted=1 '\001') at ScSipTransport.c:379 #1 0x0808e984 in TimerThread () at ScTimer.c:654 #2 0x0053e371 in start_thread () from /lib/tls/libpthread.so.0 #3 0x004879be in query_module () from /lib/tls/libc.so.6
Autres exemples :
gdb (gdb) core /home/mon_fichier_core (gdb) bt (afficher les backtraces) (gdb) up (monter dans les bt) (gdb) down (descendre dans les bt)
# gdb mon_fichier_core (gdb) thread apply all bt
Pour utiliser gdb sur un core dump le binaire doit être compilé avec l'option -g de g++ ou gcc :
gcc -g -o myfile myfile.c
gcore permet de faire un core dump d'un process en cours d'execution.
man core man gcore
tuto/linux/core_dump.txt · Dernière modification : 2010/06/24 20:33 de root