2sjin
2sjin
2sjin

블로그 메뉴

  • My GitHub
  • 전체 게시글
    • UNIX 이론 정리
    • Linux
      • Linux 관련 노하우
      • Linux 과제
      • OracleCloud & Ubuntu
      • Tomcat Server
      • MySQL Server
      • 구름 OS
      • 라즈베리파이4
    • 데이터베이스
      • DB 관련 노하우
      • DB 과제
      • DB 프로젝트
    • Unity
    • Computer Science
      • 통신 & 네트워크
      • 자료구조 & 알고리즘
      • 운영체제
      • 정보보호
      • 기타 분야
    • 소프트웨어
      • 소프트웨어공학
      • 프로그래밍 언어

공지사항

인기 글

태그

  • 팀 프로젝트
  • 개인 Term Project

최근 글

티스토리

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
2sjin

2sjin

Linux/Linux 과제

[임베디드 과제] GDB(GNU Bebugger) 기본 명령어

2022. 10. 10. 23:57

1. 기본 명령어

① GDB 시작

옵션 설명 및 실행 예시
$ gdb [프로그램명] GDB 시작
$ quit GDB 종료(단축키 [Ctrl]+[D] 사용 가능)

 

② 프로그램 진행

명령어 설명 및 실행 예시
$ run [arg] 프로그램 시작(arg: 인수 전달 가능)
$ kill 프로그램 종료
$ next [n] 다음 행 n번 수행(Default: 1번 수행), 서브루틴을 호출하면서 계속 수행
$ step [n] 다음 행 n번 수행(Default: 1번 수행), 함수가 있으면 함수 내부에서 한 줄씩 수행
$ u 현재 루프 탈출
$ finish 현재 함수를 수행하고 탈출
$ return 현재 함수를 수행하지 않고 탈출

 

③ 정지점 및 감시점

명령어 설명 및 실행 예시
$ break [point] 정지점 추가(point: 줄 번호 또는 함수명)
$ clear [point] 특정 줄이나 함수에 있는 정지점 지우기
$ delete 모든 정지점 지우기
$ watch [변수명] 감시점 추가(지정한 변수의 값이 바뀔 때마다 브레이크 되고, 이전 값과 현재 값이 출력됨)
$ info break 현재 정지점 및 감시점 상태 출력

 

④ 정보 출력(소스 코드, 변수, 스택)

명령어 설명 및 실행 예시
$ list [num1] [num2] 줄 num1~num2 사이의 소스코드 출력
(Default: 현재 위치에서 10줄)
$ print [변수명] 해당 변수의 값 출력
$ display [변수명] 해당 변수의 값을 디버깅을 진행할 때 마다 출력
$ info locals 현재 함수의 모든 지역변수 출력
$ backtrace 프로그램 전체 스택 프레임 출력
 
 

2. 디버깅 예시

GCC 컴파일 후, GDB 실행

GCC 컴파일 시, 반드시 –g 옵션을 사용해야 GDB로 디버깅이 가능함

 

 

list 명령어로 C 소스 코드 확인

 

 

break 명렁어로 main 함수가 시작될 때를 정지점으로 추가함

run 명령어로 프로그램을 실행하면, main 함수의 첫줄에서 프로그램이 정지됨

 

 

watch 명령어로 감시점 추가,

i b(info break) 명령어로 정지점과 감시점 확인

 

 

n(next) 명령어를 계속 수행하면,

정지점과 감시점을 만날 때마다 정지되는 것이 확인됨

감시점에서는 변수 I에 대한 Old value와 New value가 출력됨

 

 

정지점과 감시점 없이 run한 경우

 

 

s(step) 명령어를 수행하다가 함수 내부에 진입한 경우, 스택 프레임에 반영됨
main()에서 func()를 호출하고, func()에서 printf()를 호출하였음이 확인됨

 
저작자표시 (새창열림)

'Linux > Linux 과제' 카테고리의 다른 글

[임베디드 과제] make와 gcc로 C 프로그램 컴파일  (0) 2022.10.11
[임베디드 과제] 클랭(Clang) 컴파일러  (0) 2022.10.11
[임베디드 과제] GCC, G++ 컴파일러 이해  (0) 2022.10.10
[임베디드 과제] Bash Shell 프로그래밍 간단 예제  (0) 2022.10.04
'Linux/Linux 과제' 카테고리의 다른 글
  • [임베디드 과제] make와 gcc로 C 프로그램 컴파일
  • [임베디드 과제] 클랭(Clang) 컴파일러
  • [임베디드 과제] GCC, G++ 컴파일러 이해
  • [임베디드 과제] Bash Shell 프로그래밍 간단 예제
2sjin
2sjin

티스토리툴바