我想在输入 ctrl-C(或发送 SIGINT)时进入调试器。我已经安装了调试器(我正在运行 Ruby 1.9.3)并验证它可以工作。我已将此添加到我的设置文件中(这是用于 Padrino,但我认为它与 Rails 类似):
# file: config/boot.rb
Padrino.before_load do
trap("SIGINT") { debugger } if Padrino.env == :development
end
...但键入 Ctrl-C 不会调用调试器。事实上,如果我替换debugger
为puts "saw an interrupt!"
,键入 Ctrl-C 也不会导致打印发生。
更新
按照Mike Dunlavey的建议,我尝试从调试器中显式调用:catch Interrupt
$ rdebug `which padrino` console
^Z^Z$HOME/usr/bin/padrino:9
require 'rubygems'
(rdb:1) catch Interrupt
Catch exception Interrupt.
(rdb:1) c
=> Loading development console (Padrino v.0.10.7)
=> Loading Application BlueDotAe
=> Loading Application Admin
irb(main):001:0> C-c C-c^C
irb(main):001:0>
不高兴——中断没有进入调试器。
我错过了什么?