Skip to content

dlv

Go Debugger (dlv)

코드 실행 및 흐름 제어

명령어 설명
break (b) Breakpoint 설정: 특정 파일, 함수, 라인에 중단점을 설정.
예: b main.go:15, b main.main
tbreak Temporary Breakpoint 설정: 한 번 실행 후 삭제되는 임시 중단점 설정.
clear Breakpoint 삭제: 특정 브레이크포인트 삭제.
예: clear 1
continue © Continue 실행: 다음 중단점 또는 프로그램 종료까지 실행.
step (s) Step 실행: 현재 라인을 실행하고 함수 내부로 진입.
next (n) Next 실행: 현재 라인을 실행하고 다음 라인으로 이동 (함수 내부로 들어가지 않음).
stepout (so) Return 실행: 현재 함수의 끝까지 실행하고 반환 후 멈춤.
jump Jump 실행: 특정 라인으로 실행 위치를 강제로 변경.
예: jump main.go:42
exit Quit 종료: 디버깅 종료 및 프로그램 종료.

상태 확인

명령어 설명
list (l) List 코드: 현재 실행 위치를 포함한 코드 출력.
예: list, list 10,20
print (p) Print 변수: 변수나 표현식 값을 출력.
예: print myVar, p x + y
whatis 변수 타입 확인: 특정 변수의 타입을 출력.
예: whatis myVar
args Arguments 출력: 현재 함수의 인자값 출력.
locals 로컬 변수 출력: 현재 함수의 로컬 변수 출력.
stack 현재 스택 트레이스 출력: 호출된 함수들의 목록과 위치를 확인.

변수 관리

명령어 설명
print (p) 변수 값 출력: 특정 변수나 표현식 값을 출력.
예: p myVar
set 변수 값 수정: 특정 변수의 값을 변경.
예: set myVar = 42
whatis 변수 타입 확인: 변수의 타입을 출력.
예: whatis myVar
eval 표현식 평가: 특정 표현식을 평가.
예: eval x + y

Breakpoints 관리

명령어 설명
break (b) Breakpoint 설정: 특정 라인, 함수에 중단점 설정.
tbreak Temporary Breakpoint 설정: 한 번 실행 후 삭제되는 임시 중단점 설정.
clear Breakpoint 삭제: 특정 브레이크포인트 삭제.
예: clear 1
condition 조건부 Breakpoint 설정: 조건이 충족될 때만 멈춤.
예: condition 1 x > 5
disable Breakpoint 비활성화: 특정 브레이크포인트 비활성화.
enable Breakpoint 활성화: 비활성화된 브레이크포인트 활성화.

콜 스택 관리

명령어 설명
stack 스택 트레이스 출력: 현재 Goroutine의 호출 스택을 출력.
up 상위 프레임으로 이동: 호출한 함수의 컨텍스트로 이동.
down 하위 프레임으로 이동: 상위 프레임에서 하위 프레임으로 다시 이동.
frame 특정 프레임으로 이동: 지정된 스택 프레임으로 이동.
예: frame 2

Goroutine 관리

명령어 설명
goroutines 모든 Goroutine 출력: 현재 실행 중인 모든 Goroutine 목록 출력.
goroutine 특정 Goroutine 전환: 특정 Goroutine으로 전환.
예: goroutine 2
allg 모든 Goroutine 상태 출력: 모든 Goroutine의 현재 상태를 출력.

코드 실행

명령어 설명
continue © 프로그램 재개: 다음 중단점까지 실행.
step (s) 현재 라인 실행 후 함수 내부로 진입: 함수 호출의 내부로 들어가 디버깅.
next (n) 다음 라인 실행: 함수 호출은 실행하되 내부로 들어가지 않음.
stepout (so) 현재 함수 종료: 현재 함수 실행을 끝내고 호출자로 돌아옴.
jump 실행 위치 변경: 특정 라인으로 실행 위치 강제 변경.
예: jump main.go:45
restart 프로그램 재실행: 디버깅을 처음부터 다시 시작.

명령어 히스토리 및 설정

명령어 설명
config 설정 변경: Delve 설정 확인 및 변경.
예: config substitute-path /path1 /path2
help 도움말 출력: 특정 명령어 또는 모든 명령어의 도움말 출력.
예: help break
log 로그 출력: Delve의 디버깅 로그 활성화.
source 명령어 스크립트 실행: 파일에서 명령어를 읽어 실행.

유용한 팁

  • 조건부 중단점 사용:
break main.go:20 if x > 10  # x > 10일 때만 멈춤
  • 로컬 변수 확인:
locals
  • 스택 프레임 탐색:
up      # 상위 스택으로 이동
down    # 하위 스택으로 이동
  • Goroutine 확인 및 전환:
goroutines         # 모든 Goroutine 나열
goroutine 3        # ID 3의 Goroutine으로 전환

주요 커맨드 활용 워크플로우

  1. 중단점 설정:
break main.go:15       # main.go 파일의 라인 15에서 멈춤
  1. 프로그램 실행 및 탐색:
continue               # 프로그램 실행
next                   # 다음 라인 실행
step                   # 함수 내부로 들어가기
  1. 상태 및 변수 확인:
stack                  # 스택 트레이스 출력
locals                 # 로컬 변수 출력
print myVar            # 변수 값 출력
  1. Goroutine 확인:
goroutines             # 모든 Goroutine 출력
goroutine 2            # 특정 Goroutine으로 전환
  1. 프로그램 종료:
exit                   # 디버깅 종료