Android
2015.03.11 11:28

gdb commands

조회 수 7579 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

gdb commands

 

gdb를 이용해 디버깅을 하기 위해서는 컴파일 옵션에 –g 옵션을 붙여야 한다.

-g 옵션을 붙이게 되면, 컴파일 되는 실행 파일에 대해 여러 디버깅 정보가 삽입된다.

$cc –g –o test test.c

실행 환경으로 진입: $gdb test

 

■■Source View

소스보기(기본 10줄): [(gdb) l(list)]

소스 양 조절: [(gdb) set listsize line_number]

특정 line이나 함수로 이동: [(gdb) l line_number] or [list function_name]

특정 파일의 function 설정: [(gdb) l file.c:function_name]

 

■■Break Point

특정 라인에 break: [(gdb) b line_number]

특정 함수에 break: [(gdb) b function_name]

특정 파일의 break: [(gdb) b file.c:line_number]

현재 행으로부터 이전에 break: [(gdb) b –line_number]

 

Break point delete: [(gdb) cl line_number and function_name]

All break point delete: [(gdb) d]

현재 break point 설정 확인: [(gdb) info breakpoint]

 

■■program process

프로그램 수행: [(gdb) r(run)]

프로그램 수행 종료: [(gdb) k(kill)]

현재 행 수행 후 정지, 함수 호출 시 함수 내부로 이동: [(gdb) s(step)]

현재 행 수행 후 정지, 함수 호출 시 함수 수행 후 다음 행으로 이동: [(gdb) n(next)]

다음 break point를 만날 때까지 계속 진행: [(gdb) c(continue)]

현재 루프를 빠져나감: [(gdb) u(until)]

현재 함수를 수행하고 빠져나감 and 현재 함수를 수행하지 않고 빠져나감: [(gdb) finish and return]

Break point 활성화 and 비활성화: [(gdb) enable line_number and disable line_number]

 

■■watch point

변수가 바뀔 때마다 break가 걸리면서 변수의 이전 값(old value)과 현재 값(currently value)을 출력: [(gdb) watch variable_name]

 

■■variable and registry 출력

현재 상태에서의 지역변수 출력: [(gdb) info locals]

현재 상태에서의 전역변수 리스트 출력: [(gdb) info variables]

개별 변수 출력: [(gdb) p(printf) variable_name]

포인터가 가르치는 변수 출력: [(gdb) p *pointer_name]

포인터가 가지는 구조체 배열 출력: [(gdb) p *pointer_name@array_number]

 

■■stack status

전체 스택 출력: [(gdb) bt(backtrace)]

스택의 정보 출력: [(gdb) info f(frame)]

함수가 호출 될 때 인자를 출력: [(gdb) info args]

함수의 지역변수를 출력: [(gdb) info locals]

Bt로 봤던 여러 스택 중 선택한 스택으로 이동: [(gdb) frame stack_number]

한단계 상위 스택 프레임으로 이동: [(gdb) up]

한단계 하위 스택 프레임으로 이동: [(gdb) down]

세그멘테이션 오류나 다른 기타 오류등을 판별할 때, 스택의 상태를 검사해 봄으로써 해결할 수 있는 경우가 많고, 스택 프레임 정보에는 함수를 호출하거나 할 때 인자와 함께 리턴 어드레스가 들어 있기 때문에 디버깅시에 더 중요하다. 그래서 함수의 인자 값을 읽어봄으로써 함수가 제대로 호출되었는지 확인할 수 있고, 리턴 어드레스를 읽어봄으로써 어떤 함수의 어떤 부분에서 해당 함수를 호출했는지 알 수 있다.

 


Dreamy의 코드 스크랩

내가 모으고 내가 보는

List of Articles
번호 분류 제목 날짜 조회 수 추천 수
28 Android adb 를 이용한 터치 이벤트 보내기 2014.07.30 9236 0
27 Android ion memory 사용량 확인하기 2014.12.03 8801 0
26 Android json 데이터 다루기 - GSon 사용법 2017.03.15 8431 0
25 Android L버전 32/64bit tip 및 multi user 관련 adb 명령어 2014.11.18 8390 0
» Android gdb commands 2015.03.11 7579 0
23 Android JNI에서 가변 인수(varargs) 쓰기 2014.08.04 7514 0
22 Android SQLite 데이타 베이스 다루기 2015.03.03 7265 0
21 Android 실시간으로 폰의 pcap 보기 2016.01.05 7177 0
20 Android git archive 를 사용해서 폴더를 .git 제외하고 tar 나 zip 으로 묶기 1 2019.02.10 7041 0
19 Android 안드로이드 소스에서 shell 명령어 실행하기 2014.12.30 7024 0
18 Android 안드로이드 웨어 디자인 (Android Wear Design) [Korean] 2015.02.25 6742 0
17 Android Fake Incoming Call Android 2015.07.23 6572 0
16 Android Git 특정 commit 상태로 되돌리고 SHA1 값 알아내기 2015.05.13 6116 0
15 Android 맨날 까먹는 버튼 클릭 이벤트 핸들러 코드 2014.12.17 5857 0
14 Android [Git] git add 취소하기, git commit 취소하기, git push 취소하기 2021.09.30 5418 0
목록
Board Pagination ‹ Prev 1 2 3 4 5 6 Next ›
/ 6

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5