반응형
1. gdb 사용을 위한 core 덤프 파일을 위한 준비작업
1.1 디버깅 정보를 포함하기 위해 gcc 컴파일 옵션의 CFLAGS 에 -g 옵션을 추가한다.
1.3 core 덤프파일의 확장자로 pid 값을 달게 하기 위한 추가 작업 (option)
2.2 BackTrace
2.3 stack frame 이동
4. frame 의 소스 출력
1.1 디버깅 정보를 포함하기 위해 gcc 컴파일 옵션의 CFLAGS 에 -g 옵션을 추가한다.
ex)
CFLAGS += -Werror -Wlong-long -Wno-pointer-sign –g
CFLAGS += -Werror -Wlong-long -Wno-pointer-sign –g
1.2 core 파일의 크기를 설정한다. 보통은 무한대로 설정하면 편하다.
ulimit –c unlimited
# ulimit -a 로 확인1.3 core 덤프파일의 확장자로 pid 값을 달게 하기 위한 추가 작업 (option)
sysctl -w kernel.core_uses_pid=1
# sysctl -a 로 확인
[주의]
2, 3의 항복은 쉘의 세션마다 적용이 된다.
부팅과정의 세션과 prompt가 뜨고 root 로 로그인 후의 세션은 다르다.
2. 초 간단 GDB 사용법
2.1 실행
# gdb "<process> <process input parameter>" -c core.pid
2.2 BackTrace
gdb) bt
#0 ...
#1 ...
#2 ...
#0, #1, #2 는 스택 프레임을 나타냄#0 ...
#1 ...
#2 ...
2.3 stack frame 이동
gdb) frame 2 // #2의 프레임으로 이동
일반적으로 segmentation fault 는 표준 입출력 에러에서 발생하는 경우가 많아 #0, #1 의 경우 표준 라이브러리 형태가 많다. 4. frame 의 소스 출력
gdb) list
해당 프레임의 소스를 출력해서 죽은 포인트를 확인한다.
+
반응형
'IT Tech > Programming' 카테고리의 다른 글
블로그 카테고리 썸네일 이미지로 보기(masonry?) 적용과 문제점 (0) | 2019.01.26 |
---|---|
[C언어] Linux Pthread & Signal, Itimer 간단 예제와 의문!! (0) | 2013.10.24 |
[C언어] simple hash table - test code (0) | 2012.11.13 |
[SVN] ## 유용한 SVN 부가 명령어들 ## (0) | 2012.09.05 |
[C언어] Fast Integer ID Pool 관리 - 할당/반환 함수 (0) | 2011.12.19 |
[C언어] uint2bin (0) | 2011.09.07 |
[Lex&Yacc] Yacc 명령 그리고 Debugging!! (0) | 2011.04.19 |
[C언어] IP 관련 매크로(Macro) (0) | 2011.04.14 |
[regex] 정규표현식 테스트 프로그램 - The Regex Coach (0) | 2011.04.13 |
[C언어] parse Mac Address (0) | 2011.04.08 |