有时我正在调试一些代码,越过一行然后想:“嗯,我想参与其中”。或者我输入一些表达式然后进行评估(我总是打开'autoeval')并想:“为什么它会给出这个结果?我想进入我刚刚输入的这个表达式,看看它到底在做什么”。
据我所知,这在 1.8.7 中是不可能的。ruby-debug
也不是 1.9.3 debugger
。是否还有其他支持此功能的 Ruby 调试器?
有一个名为trepanning的 ruby-debug 重写,它允许通过“debug”命令进行嵌套调试。请参阅https://github.com/rocky/rb-trepanning/wiki/Nested-debugging。
不幸的是,它需要修补 MRI Ruby 1.9.3(或 1.9.2),因为根本问题出在 MRI 1.9 运行时系统中。有关如何安装,请参阅https://github.com/rocky/rb-trepanning/wiki/How-to-install-rb-trepanning 。
当然,你可以做所有你要求的事情。
在调试会话中执行以下操作:
(rdb:1)s # steps into method
(rdb:1)l # list current line
(rdb:1)obj.method # eval expression
虽然不可能进入刚刚输入的表达式 - 据我所知
Dirty:
(rdb:1)def someobj.some_method_name
(rdb:2)* debugger
(rdb:3)* my.expression_i_want_to_step_in
(rdb:4)* end
(rdb:5)someobj.some_method_name
(rdb:1) # this should be the new session at my.expression_i_want_to_step_in - untested
ruby-debug的快速总结