혹시, gdb에 대해서 아시나요?
프로그래밍을 할 때, 디버깅을 하기 위해서 툴 하나씩은 다루실 것입니다. 물론, 아직 다루시지 않는 분들도 계실 것입니다.
혹시 아직도 printf로 어디가 문제 있는 지 찾는 분 계시나요? 물론, 저도 처음에는 그랬습니다.
이 방법은 굉장히 시간이 오래 걸리는 방법입니다.
특히, 임베디드 시스템은 훨씬 오래 걸리게 됩니다. 왜냐하면 컴파일을 하는 시간이 굉장히 길기 때문에 신중하게 고쳐야 하거든요.
그래서 오늘은 디버깅 툴 중 하나인 강력한 디버깅 툴인 gdb의 기능을 정리하고자 합니다.
보통 gdb를 어려워 하는 이유는 breakpoint를 어떻게 잡아야할 지에 대한 막막함 때문이라고 생각합니다.
따라서 gdb의 breakpoint를 거는 방법에 대해 정리해보고자 합니다.
- (GDB) break +2 -- 현재 행에서 2개 행 이후 브레이크포인트 설정합니다.
- (GDB) break -2 //현재 행에서 2개 행 이전 브레이크포인트 설정합니다.
- (GDB) break *0x8049000 -- 메모리주소에 설정합니다.(어셈블리로 디버깅시 이용합니다.)
- (GDB) break 10 if var == 0 -- var 변수의 값이 0일때 10번 행에 설정합니다.
2. 조건을 기준으로 브레이크포인트를 발동시키고 싶을 때,
- (GDB) condition [N] var == 0 -- var변수가 0일때 N번 브레이크포인트 동작합니다.
- (GDB) condition [N] func(i) > 5
3. 현재 설정된 브레이크포인트의 목록을 확인하고자 할 때.
- (GDB) info break
4. 설정한 브레이크포인트가 필요 없어서 지우고자 할 때. (gdb의 브레이크포인트는 종료될 때까지 유효하므로, 제거해야 합니다.)
- (GDB) cl(clear) [함수명] -- 해당 함수명의 브레이크포인트를 제거합니다.
- (GDB) clear 10 -- 해당 라인의 브레이크포인트를 제거합니다.
- (GDB) clear [파일명]:[함수명] -- 파일명:함수명에 설정한 브레이크포인트를 제거합니다.
- (GDB) clear [파일명]:10 -- 파일명:라인번호에 설정한 브레이크포인트를 제거합니다.
- (GDB) d -- 모든 브레이크포인트 지웁니다.
- (GDB) disable br -- 모든 브레이크포인트 비활성화합니다.
- (GDB) disable br 1 3 -- 1번, 3번 브레이크포인트 비활성화합니다.
- (GDB) ensable br -- 모든 브레이크포인트 활성화합니다.
- (GDB) ensable br 1 3 -- 1번, 3번 브레이크포인트 활성화합니다.
'컴퓨터 관련 > Linux || Unix' 카테고리의 다른 글
리눅스(우분투) 32bit와 64bit 차이점 및 64bit에서 32bit 또는 32bit에서 64bit 컴파일 방법 정리 (0) | 2017.05.25 |
---|---|
우분투 (ubuntu) 리눅스 작업 공간 4개 만들기 (늘리기) / 개발환경 설정 (0) | 2017.04.27 |
리눅스(Linux) 루트 권한 얻기 (0) | 2017.04.27 |
컴파일러(compiler)와 인터프리터(interpreter)의 차이점 / 컴파일러란? /인터프리터란? (0) | 2017.04.25 |
GTK+ 버튼 클릭으로 콘솔에 문자열 출력 (0) | 2017.04.23 |
댓글