6

ruby デバッガーは、実行開始時とは異なるファイルに設定したブレークポイントで停止しません。たとえば、次の 2 つのファイルfoo.rbについて考えてみましょう。

# foo.rb
class Foo
  def bar
    puts "baz"
  end
end

およびmain.rb :

# main.rb
require './foo'
Foo.new.bar

を使用してデバッグを開始しruby -r debug .\main.rbます。ここで、 を使用して別のファイルの特定の行にブレークポイントを設定しようとすると、Set breakpoint 1 at foo.rb:4b ./foo.rb:4というメッセージが表示されますが、プログラムが最後まで実行され、デバッガーが停止することはありません。ただし、main.rbの行(例: ) またはメソッド (例: ) で中断すると、デバッガーは期待どおりに停止します。contb ./main.rb:3b Foo.bar

メイン ファイル以外のファイルのブレークポイントでデバッガが停止しないのはなぜですか?

更新: Windows 7 と OS X 10.8 の Ruby 1.9.3 でこれを試しました。どちらの環境でも機能しません。

また、スクリプトが最後まで実行された後、デバッガーが終了することにも気付きました。main.rbのデバッグを開始し、 useを実行するcontと、bazがコンソールに出力され、すぐにシェルに戻ります。これは予期された動作ですか、それともデバッガがクラッシュした可能性がありますか?

4

1 に答える 1

2

うわー、それは奇妙です。これが役立つかどうかはわかりませんが、おそらくこれを行うことができます。次に Foo が読み込まれるように、require を next でステップ オーバーします。

b Foo:bar

それは少なくともバーで壊れるべきです

于 2012-12-03T05:02:43.060 に答える