如何使用键盘打断正在运行Rails应用程序的ruby-debug?

3
我正在Rails 2.3上使用bundle exec rdebug script/server运行ruby-debug。当我按下Ctrl-C时,它会退出整个程序和调试器。我想停止程序的执行并进入调试器会话。
我尝试了catch Interrupt但没有起作用。是否有一个异常在使用Ctrl-C停止rails时被调用,可以用于此目的?还是有其他方法?
我想要的是相当于在Visual Studio中按下Break(暂停)按钮的等效操作(我还没有在Rails IDE中完成这个操作)。

你打算在什么时候按下暂停按钮呢?我怀疑你的速度是否足够快,能在你的操作方法中捕获到Rails..你可以在你的代码中使用“debugger”命令来创建断点,但是像VS中的暂停按钮一样断点基本上对Web应用程序没有用处。 - Tigraine
也许一个仅供开发人员使用的机架中间件来调用debugger(我已经知道了,谢谢)作为对我使用CURL调用某个API的响应,将是一个适当的解决方案。但我计划这样做是为了使用rdb的接口设置断点,所以它不必在特定时间停止程序,只需不停止程序即可。 - Benjamin Atkin
@Tigraine 方法如果出现问题,通常会非常慢。进入调试器的一个常见原因是查找方法为什么需要很长时间(通常是在库代码中)。 - James Moore
如果你真的在寻找代码性能问题,我建议使用实际的分析器而不是调试器。调试器只有在你知道某些东西不起作用并想进入其中查看范围以调试出错时才有用。 - Tigraine
2个回答

3

我建议使用pry,而不是ruby-debug。安装这个gem之后,你只需要将以下代码插入到你想要调试的位置:

binding.pry

看起来如果你正在使用byebug,你可以开始一个pry会话(这是在这个答案之后很久才添加到Rails中的)。 - James Moore

1
你应该在代码中加入debugger语句,这样会自动创建一个调试会话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接