목적:
gdb를 활용해서 바이너리 파일을 실행하는게 번거로울때
segment fault가 발생하면 자동으로 core file이 생성되도록 설정
절차:
1. ulimit -a 로 조회
2. ulimit -c 로 core file size를 설정
얼마나 큰 파일이 생성될지 모르기 때문에 unlimited 으로 설정
3. 바이너리를 실행하다가 segment fault가 발생하면..
core파일이 생성됐는지 확인!
core.xxxx 처럼 뒤에 숫자가 붙어있다.
4. core파일을 gdb로 열어서 확인
실행 해보면 어떤 바이너리를 실행한 core 파일인지 확인 가능
5. 바이너리 파일을 지정 해준 후 core파일을 열어서 디버깅 시작
6. ulimit -c 로 core file size 원복
계속해서 core 파일을 생성하면 불필요한 하드 공간을 차지하게 되므로..
검증작업이 끝났다면 core file 크기를 원복 시켜주는게 좋습니다.
※ gdb 활용법은 아래 포스팅을 참고하세요~
http://kthan.tistory.com/6
gdb를 활용해서 바이너리 파일을 실행하는게 번거로울때
segment fault가 발생하면 자동으로 core file이 생성되도록 설정
1. ulimit -a 로 조회
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31160
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31160
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
2. ulimit -c 로 core file size를 설정
얼마나 큰 파일이 생성될지 모르기 때문에 unlimited 으로 설정
#ulimit -c unlimited
3. 바이너리를 실행하다가 segment fault가 발생하면..
core파일이 생성됐는지 확인!
core.xxxx 처럼 뒤에 숫자가 붙어있다.
# ll -t
-rw------- 1 root root 764497920 Jun 20 08:20 core.19018
-rw------- 1 root root 764497920 Jun 20 08:20 core.19018
4. core파일을 gdb로 열어서 확인
실행 해보면 어떤 바이너리를 실행한 core 파일인지 확인 가능
# gdb -c core.19018
GNU gdb (GDB) Fedora (7.0.1-50.fc12)
Copyright (C) 2009 Free Software Foundation, Inc.
... 중략 ...
Core was generated by `test_coredump'.
... 중략 ...
#0 0x0000003a606327f5 in ?? ()
(gdb)
GNU gdb (GDB) Fedora (7.0.1-50.fc12)
Copyright (C) 2009 Free Software Foundation, Inc.
... 중략 ...
Core was generated by `test_coredump'.
... 중략 ...
#0 0x0000003a606327f5 in ?? ()
(gdb)
5. 바이너리 파일을 지정 해준 후 core파일을 열어서 디버깅 시작
# gdb -c core.32258 ./test_coredump
6. ulimit -c 로 core file size 원복
계속해서 core 파일을 생성하면 불필요한 하드 공간을 차지하게 되므로..
검증작업이 끝났다면 core file 크기를 원복 시켜주는게 좋습니다.
#ulimit -c 0
※ gdb 활용법은 아래 포스팅을 참고하세요~
http://kthan.tistory.com/6
'IT 생활 > 리눅스&우분투' 카테고리의 다른 글
[Linux/리눅스] 디버깅을 위한 gdb 사용법 및 명령어 - 중급 (0) | 2011.09.28 |
---|---|
[리눅스/Linux] ctags를 활용한 효율적인 vi(vim) 소스 편집 (0) | 2011.06.23 |
[리눅스/Linux] 패킷 생성 및 전송 툴 - tomahawk, tcpreplay, bittwist (0) | 2011.04.26 |
[리눅스/Linux] 크론탭(crontab) 설정 및 사용방법 (1) | 2011.04.12 |
[Linux/리눅스] 디버깅을 위한 gdb 사용법 및 명령어 - 초급 (0) | 2011.03.25 |