我在Emacs中编写Ruby,但我的Emacs技能实际上非常低。我可以做的是打开项目,TDD使用M-x rinari-test,或者在第二个窗口使用M-x run-ruby玩劣质Ruby。现在我想开始使用StdLib的调试器。我可以通过说:
从irb召唤它require 'debug'
我进入提示
(rdb:1)
但我的能力结束了。我甚至不知道如何进入文件。打字'帮助'带来了一个屏幕,但它并没有帮助我最终开始调试我的bug宝石。在线,每个人写的东西,如“rdebug”或“ruby-debug”或我最初不想使用的东西,其次,作为麻瓜,我无法安装在我的Debian上。请帮忙!!!
答案 0 :(得分:2)
您确实需要尝试在调试器中读取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
运行(继续),直至到达number
行。b number
在第number
行设置断点。设置断点后,使用c
继续运行,直到执行该行。q
退出调试器。就个人而言,我使用debugger宝石。其他人使用PRY,它类似于IRB,但使用类似调试器的扩展。
知道如何使用调试器是一项很好的技能。您可以使用调试器快速跟踪问题,尝试使用puts
语句需要更长时间,因为您可以交互地查看变量包含的内容,或者在变量包含特定值之前有条件地循环。