Bug : 컴퓨터 프로그램의 결함
Logic error : 제어문이나 데이터 형의 잘못된 사용 -> 비정상적인 결과
Compile error : 문법 오류
Runtime error : 프로그램의 실행 도중 발생하는 오류
Link error : 전역변수 정의 및 함수 선언 및 정의가
잘못된 경우
Debugging : 버그를 발견하여 수정하는 것
GDB : 프로그램이 실행될 때 내부에서 어떻게 작동되는지를 확인
-g
옵션 : 컴파일 되는 실행 파일에 디버깅 정보 삽입
o 사용법
l ß 소문자 L 을 뜻한다.
l 메인 함수를 기점으로 소스 출력
l [행번호] 해당 행 주위의 소스를 보여준다
l [파일명]:[함수명] 특정 파일의 소스를 보여준다
l [함수명] 해당 함수의 소스를 보여준다
l - 출력된 행의 이전 행을 출력
l file.c:func file.c 파일의 func 함수 부분 출력
l file.c:10 file.c 파일의 10행을 기준으로 출력
브레이크포인트 : 실행 도중 프로그램에 대한 추가적인 정보를 알아내기
위한 수단
b func func 함수의 시작 부분에 브레이크 포인트 설정
b 10 10행에 브레이크 포인트 설정
b file.c:func file.c 파일의 func 함수에 브레이크 포인트 설정
b file.c:10 file.c 파일의 10 행에 브레이크 포인트 설정
b +2 현재 행에서 2개 행 이후 지점에 브레이크 포인트 설정
b -2 현재 행에서 2개 행 이전 지점에 브레이크 포인트 설정
b *0x8049000 0x8049000 주소에 브레이크 포인터 설정(어셈블리로 디버깅 시 사용)
b 10 if var = 0 10행에 브레이크 포인트를 설정하는데 var 변수 값이 0일때 작동
tb b 명령어로 브레이크를 걸면 gdb가 종료할때 까지 유용하므로 임시로 한번
만 브레이크 포인트를 걸고 싶을때 사용
d : 모든 브레이크포인트를 지움
s : 현재 행 수행 후 정지 함수 호출 시 내부로 들어감
s 5: s를 5번
입력
n : 형재 행 수행 후 정지,
함수 호출시 함수 수행 후 다음 행으로 감
c : 다음 브레이크포인트를 만날 때까지 계속 진행
u : 현재 루프를 빠져나감
finish : 현재 함수를 수행하고 빠져나감
return : 현재 함수를 수행하지 않고 빠져나감
return123 : 현재 함수를 수행하지 않고 빠져나감, 리턴값은 123
와치포인트 : 어떤 변수 값이 바뀔 때마다 브레이크를 걸 때 사용
- i locals 현재 상태에서의 지역변수와 값 출력
- p : 개별 변수의 출력
- p $[register] 레지스트 값 확인
- i registers 레지스트 값 전체를 출력
n 출력 형식의 지정
o 사용법
p/[출력형식] [변수]
출력형식
t : 2진수
o: 8진수
d:부호있는 10진수
u:부호없는 10진수
x:16진수
f:부동 소수점
c:최초 1바이트의 문자형