본문으로 건너뛰기

LLDB로 Rust 디버깅하기

LLDB란?

GDB와 유사한 저수준 디버거. macOS에서는 GDB 대신 LLDB를 기본으로 사용한다.
Rust용 래퍼인 rust-lldb를 쓰면 Rust 타입을 더 잘 출력해준다.

실행 방법

# Rust 전용 래퍼 (타입 출력 개선)
rust-lldb ./target/debug/my_program

# 또는 직접 lldb
lldb ./target/debug/my_program

주요 단축키

명령어설명
b main.rs:10main.rs 10번째 줄에 브레이크포인트
b 10현재 파일 10번째 줄에 브레이크포인트
r프로그램 실행 (run)
c다음 브레이크포인트까지 계속 실행 (continue)
n다음 줄 실행 (next, 함수 내부 진입 안 함)
s다음 줄 실행 (step, 함수 내부 진입)
bt콜스택 출력 (backtrace)
p <변수>변수 값 출력 (print)
q디버거 종료 (quit)

변수 출력 (frame variable)

frame variable              # 현재 스코프 지역 변수 전체 출력
frame variable self # self 출력
frame variable self.name # self.name 필드 출력
frame variable --show-globals # 전역 변수 포함 출력
frame variable --show-types # 타입 정보 포함 출력
frame variable --show-types --show-values # 타입 + 값 출력

표현식 실행

expr <표현식>   # 현재 컨텍스트에서 표현식 평가 및 실행

GDB 사용 시 (Linux)

rust-gdb ./target/debug/my_program

GDB 명령어는 LLDB와 거의 동일하지만 일부 차이가 있다:

  • info locals → 지역 변수 (LLDB의 frame variable)
  • info breakpoints → 브레이크포인트 목록
  • delete <번호> → 브레이크포인트 삭제