core dumped / core dump / coredump / gdb
Segmentation fault (core dumped)
나오면서 죽는 경우가 있다. 이럴때는
ulimit -c 50000
이렇게 core dump 파일이 생길 수 있도록 환경 설정을 해주고 (50000byte 짜리 core dump file 이 생긴다)
프로그램을 다시 돌리면 core 라는 파일이 생긴것을 볼 수 있다.
이걸 가지고 gdb로 디버깅을 걸 수 있다.
프로그램을 gcc로 컴파일 할 때 -g 옵션을 줘서 컴파일 하면 gdb 돌릴때 좋다.
gdb -c=core ./tutorial01
이렇게 하면 gdb로 문제가 생긴 부분을 볼 수 있다.
gdb로 들어가서
(gdb) bt
라고 bt 를 치면 back trace 해서 죽은 위치가 나온다.
------------------------------------------------------------------------------------------------------------------------------------------------------
coredump 경로를 변경하고 싶으면
sudo echo "/home/lionelj/log/core" | sudo tee /proc/sys/kernel/core_pattern
이렇게 하면 코어덤프 파일 경로를 변경 할 수 있다.
------------------------------------------------------------------------------------------------------------------------------------------------------
core dump file 이 안생기게 하려면 다시
ulimit -c 0 하면 되고
무제한으로 크게 core dump 파일을 생성하려면
ulimit -c unlimited
라고 써준다.
------------------------------------------------------------------------------------------------------------------------------------------------------
gdb 관련 추가
gdb) up //스택 이동
#1 0x0005fa50 in t_z47_completion_p1 ()
(gdb) up
#2 0x0003dcb0 in rpc_t_z47_completion_p1 ()
(gdb) down
#1 0x0005fa50 in t_z47_completion_p1 ()
(gdb) disassemble
Dump of assembler code for function t_z47_completion_p1:
0x5e058 <t_z47_completion_p1>: save %sp, -472, %sp
0x5e05c <t_z47_completion_p1+4>: st %i5, [ %fp + 0x58 ]
0x5e060 <t_z47_completion_p1+8>: st %i4, [ %fp + 0x54 ]
0x5e064 <t_z47_completion_p1+12>: st %i3, [ %fp + 0x50 ]
0x5e068 <t_z47_completion_p1+16>: st %i2, [ %fp + 0x4c ]
0x5e06c <t_z47_completion_p1+20>: st %i1, [ %fp + 0x48 ]
0x5e070 <t_z47_completion_p1+24>: st %i0, [ %fp + 0x44 ]
0x5e074 <t_z47_completion_p1+28>: clr %l0
0x5e078 <t_z47_completion_p1+32>: st %l0, [ %fp + -136 ]
0x5e07c <t_z47_completion_p1+36>: mov 0x50, %l0
0x5e080 <t_z47_completion_p1+40>: mov %l0, %o0
0x5e084 <t_z47_completion_p1+44>: call 0x24cfc0 <dce_malloc>
0x5e088 <t_z47_completion_p1+48>: nop
0x5e08c <t_z47_completion_p1+52>: mov %o0, %l1
0x5e090 <t_z47_completion_p1+56>: ld [ %fp + 0x90 ], %l0
0x5e094 <t_z47_completion_p1+60>: st %l1, [ %l0 ]
--중간생략---
0x5fa1c <t_z47_completion_p1+6596>: call 0x24d7e8 <dce_free>
0x5fa20 <t_z47_completion_p1+6600>: nop//이 영역에 오류를 유발한코드가 있을가능성있음.
0x5fa24 <t_z47_completion_p1+6604>: ld [ %fp + 0x90 ], %l0
0x5fa28 <t_z47_completion_p1+6608>: ld [ %l0 ], %l0
0x5fa2c <t_z47_completion_p1+6612>: sethi %hi(0x267400), %l1
0x5fa30 <t_z47_completion_p1+6616>: or %l1, 0x254, %l1 ! 0x267654 <lcmetbl+6160>
0x5fa34 <t_z47_completion_p1+6620>: sethi %hi(0x1800), %l2
0x5fa38 <t_z47_completion_p1+6624>: or %l2, 0x358, %l2 ! 0x1b58
0x5fa3c <t_z47_completion_p1+6628>: mov %l0, %o0
0x5fa40 <t_z47_completion_p1+6632>: mov %l1, %o1
0x5fa44 <t_z47_completion_p1+6636>: mov %l2, %o2
0x5fa48 <t_z47_completion_p1+6640>: call 0x28bc68 <sprintf>
0x5fa4c <t_z47_completion_p1+6644>: nop
0x5fa50 <t_z47_completion_p1+6648>: call 0x5c690 <commit_work>
'Linux' 카테고리의 다른 글
Linux BlueZ Howto (0) | 2014.02.18 |
---|---|
AWS python tweepy 한글 local 지원 안될때 (0) | 2013.08.28 |
Failed to open LIRC support. You will not be able to use your remote control. (0) | 2013.04.05 |