블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2025.2
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

공지사항

최근에 올라온 글

[리눅스]Core 분석

02.서버-Linux / 2012. 12. 19. 13:32

0037. [리눅스] Core 분석

gcc 등을 이용하여 컴파일 혹은 실행 도중 에러가 발생하는 경우.

(Core dump 는 소스 컴파일시에는 일어나지 않지만 실행시만 에러로 떨어짐.)

컴파일 옵션에 -g 를 넣으면 디버그 정보를 넣어서 컴파일 하여 core 파일 분석.

Segmentation fault -> 파일생성 실패. ulimit을 사용해서 풀어준다. (ulimit -c 1024)

::: Core 파일 분석을 위해 gdb를 실행한다.

~]$ ulimit -c 1024

~]$ gdb 실행파일명 core파일명

어느부분에서 에러가 났는지 확인할 수 있다.

그 외 옵션

(gdb) backtrace
#0 0x08048396 in printString (string=0x0) at main.c:14
#1 0x0804837c in main (argc=1, argv=0x0) at main.c:8

'backtrace' 명령어는 함수를 연대기순으로 나열해 준다. 맨 위에 줄이 segmentation fault
가 발생한 소스이다. 저걸 보면 main.c:8 에서 main.c:14를 호출한 것을 알 수 있다.
더 많은 정보를 얻기 위해 'frame' 명령을 사용하도록 하자. 'frame' 명령은 'backtrace'
명령 실행으로 나온 항목들에 대해 더 많은 정보를 보여준다.


(gdb) frame 0
#0 0x08048396 in printString (string=0x0) at main.c:14
14 sprintf(string, "This is a test.\n");
(gdb) frame 1
#1 0x0804837c in main (argc=1, argv=0x0) at main.c:8
8 printString(argv);

이것을 보면 이미 main.c:8 에서 argv가 0으로 값이 넘어간 것을 알 수 있다.

(gdb) bt

수행한 함수 목록 뷰(스택의 상세보기)

(gdb) [up / down] (스택의 이동 frame 번호 순)

'02.서버-Linux' 카테고리의 다른 글

[리눅스]아파치 번역  (0) 2012.12.19
[리눅스]하드디스크 점검  (0) 2012.12.19
[리눅스]요약 정리  (0) 2012.12.19
[리눅스]본딩 작업  (0) 2012.12.19
[리눅스]메일서버 장애 대처  (0) 2012.12.19
Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함