0

有时我正在调试一些代码,越过一行然后想:“嗯,我想参与其中”。或者我输入一些表达式然后进行评估(我总是打开'autoeval')并想:“为什么它会给出这个结果?我想进入我刚刚输入的这个表达式,看看它到底在做什么”。

据我所知,这在 1.8.7 中是不可能的。ruby-debug也不是 1.9.3 debugger。是否还有其他支持此功能的 Ruby 调试器?

4

2 回答 2

2

有一个名为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 。

于 2012-12-19T14:41:49.940 回答
0

当然,你可以做所有你要求的事情。
在调试会话中执行以下操作:

(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的快速总结

于 2012-12-19T08:44:36.383 回答