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으로 전환
주요 커맨드 활용 워크플로우⚑
- 중단점 설정:
break main.go:15 # main.go 파일의 라인 15에서 멈춤
- 프로그램 실행 및 탐색:
continue # 프로그램 실행
next # 다음 라인 실행
step # 함수 내부로 들어가기
- 상태 및 변수 확인:
stack # 스택 트레이스 출력
locals # 로컬 변수 출력
print myVar # 변수 값 출력
- Goroutine 확인:
goroutines # 모든 Goroutine 출력
goroutine 2 # 특정 Goroutine으로 전환
- 프로그램 종료:
exit # 디버깅 종료