help
デバッガーでの出力を実際に読み取ってみる必要があります。コマンドの説明が丁寧です。
たとえば、練習のために、エディタ/IDE 内ではなく、コマンドラインでこれを試してください。
ruby -rdebug -e 'p 1'
h
Ruby のデバッガーは、ヘルプの概要を出力します。
Debugger help v.-0.002b
Commands
b[reak] [file:|class:]<line|method>
b[reak] [class.]<line|method>
set breakpoint to some position
wat[ch] <expression> set watchpoint to some expression
cat[ch] (<exception>|off) set catchpoint to an exception
b[reak] list breakpoints
cat[ch] show catchpoint
del[ete][ nnn] delete some or all breakpoints
disp[lay] <expression> add expression into display expression list
undisp[lay][ nnn] delete one particular or all display expressions
c[ont] run until program ends or hit breakpoint
s[tep][ nnn] step (into methods) one line or till line nnn
n[ext][ nnn] go over one line or till line nnn
w[here] display frames
f[rame] alias for where
l[ist][ (-|nn-mm)] list program, - lists backwards
nn-mm lists given lines
up[ nn] move to higher frame
down[ nn] move to lower frame
fin[ish] return to outer frame
tr[ace] (on|off) set trace mode of current thread
tr[ace] (on|off) all set trace mode of all threads
q[uit] exit from debugger
v[ar] g[lobal] show global variables
v[ar] l[ocal] show local variables
v[ar] i[nstance] <object> show instance variables of object
v[ar] c[onst] <object> show constants of object
m[ethod] i[nstance] <obj> show methods of object
m[ethod] <class|module> show instance methods of class or module
th[read] l[ist] list all threads
th[read] c[ur[rent]] show current thread
th[read] [sw[itch]] <nnn> switch thread context to nnn
th[read] stop <nnn> stop thread nnn
th[read] resume <nnn> resume thread nnn
p expression evaluate expression and print its value
h[elp] print this help
<everything else> evaluate
開始する重要なコマンドはs
、n
、、およびc
です。b
q
s
メソッドにステップインします。
n
メソッドをステップオーバーします。
c number
line に到達するまで実行 (継続) しますnumber
。
b number
line にブレークポイントを設定しますnumber
。ブレークポイントを設定した後c
、その行が実行されるまで実行を続けます。
q
デバッガを終了します。
個人的には、debugger gem を使用しています。他の人はPRYを使用します。これは IRB に似ていますが、デバッガーのような拡張機能があります。
デバッガーの使用方法を知っていることは、優れたスキルです。puts
変数に含まれる内容をインタラクティブに確認したり、変数に特定の値が含まれるまで条件付きでループしたりできるため、デバッガーを使用してすばやく追跡できる問題がありますが、ステートメントを使用しようとすると時間がかかります。