- Pry 디버깅 호출하기
byebug
vsbinding.pry
vsbinding.irb
byebug
pry
-
binding.irb
- 코드 단계별 실행
- 콜스택 탐색
- 축약 명령어
- 마지막 명령어 반복
Pry 디버깅
Pry 디버깅 호출하기
디버거를 호출하려면 코드의 어딘가에 binding.pry
를 배치하십시오.
루비 인터프리터가 해당 코드를 만나면 실행이 중단되고,
프로그램의 상태를 디버깅하기 위해 명령어를 입력할 수 있습니다.
Puma 또는 Sidekiq와 같이 다른 프로세스에서 코드를 디버깅할 때는 binding.pry_shell
을 사용할 수 있습니다.
그런 다음 pry-shell 실행 파일을 사용하여 이 세션에 연결할 수 있습니다.
pry-shell
사용 방법에 대한 자세한 정보는 이 비디오를 시청하세요.
경고:
binding.pry
는 가끔 자동 로딩 문제를 경험하고 이름 해석 중 실패할 수 있습니다.
필요한 경우, 더 제한된 기능 세트를 가진 binding.irb
를 대신 사용할 수 있습니다.
byebug
vs binding.pry
vs binding.irb
byebug
는 gdb
와 매우 유사한 인터페이스를 가지고 있지만, byebug
는 강력한 Pry REPL을 사용하지 않습니다.
binding.pry
는 Pry를 사용하지만, 일부 byebug
기능이 부족합니다.
GitLab은 pry-byebug
젬을 사용합니다.
이 젬은 byebug
의 일부 기능을 binding.pry
에 제공합니다.
따라서 이것을 사용하면 가장 강력한 디버깅 기능을 얻을 수 있습니다.
byebug
전체 명령 목록은 문서를 확인하세요.
pry
명령으로 Pry REPL을 시작할 수 있습니다.
pry
pry
에는 많은 기능이 포함되어 있으며, 이 문서에서 다룰 수 있는 양이 너무 많습니다.
완전한 문서는 Pry 위키에서 확인하세요.
아래는 꼭 확인할 만한 몇 가지 기능이며,
프라이 세션에서 help
를 실행하면 할 수 있는 다른 것들도 확인할 수 있습니다.
binding.irb
루비 2.7부터, IRB는 간단한 대화형 디버거를 제공합니다.
자세한 내용은 문서를 확인하세요.
상태 탐색
상태 탐색을 사용하면 코드에서 이동하여 메서드 등을 찾을 수 있습니다:
# 컨텍스트 변경
[1] pry(main)> cd Pry
[2] pry(Pry):1>
# 메서드 출력
[2] pry(Pry):1> ls -m
# 메서드 찾기
[3] pry(Pry):1> find-method to_yaml
소스 탐색
pry
세션에서 소스 코드를 확인할 수 있습니다:
[1] pry(main)> $ Array#first
# 위의 코드는 다음과 같습니다.
[2] pry(main)> cd Array
[3] pry(Array):1> show-source first
$
는 show-source
의 별칭입니다.
문서 탐색
소스 탐색과 유사하게, 문서 탐색도 가능합니다.
[1] pry(main)> show-doc Array#first
?
는 show-doc
의 별칭입니다.
명령 기록
Control + R를 사용하여 명령 기록을 검색할 수 있습니다.
코드 단계별 실행
코드를 단계별로 실행하려면 다음 명령어를 사용할 수 있습니다:
-
break
: 브레이크포인트를 관리합니다. -
step
: 다음 라인이나 메서드로 실행을 단계별로 진행합니다. 여러 번 단계별로 진행할 수 있는 선택적 숫자 인수를 받습니다. -
next
: 동일한 프레임 내에서 다음 라인으로 건너뜁니다. 여러 줄을 건너뛰기 위한 선택적 숫자 인수를 받습니다. -
finish
: 현재 스택 프레임이 반환될 때까지 실행합니다. -
continue
: 프로그램 실행을 지속하고 Pry 세션을 종료합니다.
콜스택 탐색
다음 명령어로 콜스택에서 이동할 수 있습니다:
-
backtrace
: 현재 스택을 보여줍니다. 왼쪽에 있는 숫자를 사용하여 frame 명령어로 스택을 탐색할 수 있습니다. -
up
: 스택 프레임을 위로 이동합니다. 여러 프레임을 이동하기 위한 선택적 숫자 인수를 받습니다. -
down
: 스택 프레임을 아래로 이동합니다. 여러 프레임을 이동하기 위한 선택적 숫자 인수를 받습니다. -
frame <n>
: 특정 프레임으로 이동합니다. 인수 없이 호출하면 현재 프레임을 표시합니다.
축약 명령어
byebug
대신 binding.pry
를 사용할 때 s
, n
, f
, c
와 같은 축약 명령어는 작동하지 않습니다. 이를 재설치하려면 ~/.pryrc
에 다음을 추가하십시오:
if defined?(PryByebug)
Pry.commands.alias_command 's', 'step'
Pry.commands.alias_command 'n', 'next'
Pry.commands.alias_command 'f', 'finish'
Pry.commands.alias_command 'c', 'continue'
end
마지막 명령어 반복
마지막 명령어는 Enter 키를 눌러서 반복할 수 있습니다(예: step
이나 next
와 함께). 다음 스니펫을 ~/.pryrc
에 배치하면 됩니다:
Pry::Commands.command /^$/, "repeat last command" do
_pry_.run_command Pry.history.to_a.last
end
byebug
는 이를 기본으로 지원합니다.