gdb 기초

숲사람·2022년 3월 24일
0

UNIX & C

목록 보기
2/12

디버거의 기본기능

  • step execution (단계적 실행)
  • breakpoint (설정된 중단점까지 실행)
  • memory examination (메모리나 레지스터 값 확인)

명령어

  • gcc -g 옵션 빌드필요. 이후 $ gdb a.out
  • 실행
    run 또는 r
  • 리스트 보기 (소스코드 및 라인번호 출력)
    l
  • 브레이크 설정
    b 라인넘버
  • 다음행 실행
    • next 그냥 다음행(함수진입x)
      n
    • step (함수진입)
      s
  • 변수 확인
    p 변수이름 또는 p {변수1, 변수2, 변수3, ...}
  • continue (루프에서 사용가능)
    c
  • 종료
    q
  • step out (루프 탈출)
    finish fin

Makefile -g 옵션 사용 팁

gdb를 사용하려면 gcc 에서 -g옵션으로 컴파일 되어야함. 아래와 같이 Makefile작성 뒤 $ make debug 명령 수행하면 -g 옵션으로 컴파일 됨.

CC = gcc 
CCFLAGS = 

all : hashtable

debug : CCFLAGS += -g
debug : hashtable

hash.o : hash.c hashtable.h
        $(CC) $(CCFLAGS) -c hash.c -o hash.o

main.o : main.c hashtable.h
        $(CC) $(CCFLAGS) -c main.c -o main.o

hashtable : hash.o main.o
        $(CC) $(CCFLAGS) hash.o main.o -o hashtable

GDB 인터페이스 보기쉽게해주는 도구

Trouble shooting : gdb설치 이후 vim실행안됨

$ vi
dyld: Library not loaded: /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/Python
  Referenced from: /usr/local/bin/vi
  Reason: image not found
Abort trap: 6
Removing: /usr/local/Cellar/python/3.6.5... (5,588 files, 109.4MB)
Error: Directory not empty @ dir_s_rmdir - /usr/local/Cellar/python/3.6.5

Trouble shooting : 맥에서 gdb 사용할때 문제

run 할때 아래와 같이 에러

(gdb) r
Starting program: /Users/jihuun/project/apue2/hashtable/hashtable 
Unable to find Mach task port for process-id 28525: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))
profile
기록 & 정리 아카이브 용도 (보다 완성된 글은 http://soopsaram.com/documentudy)

1개의 댓글

comment-user-thumbnail
2022년 4월 5일

GDB to LLDB command map
https://lldb.llvm.org/use/map.html

답글 달기