ruby-debug 0.10.4 → 0.10.5.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. data/AUTHORS +5 -0
  2. data/CHANGES +17 -0
  3. data/ChangeLog +6086 -3711
  4. data/README +39 -0
  5. data/Rakefile +67 -82
  6. data/cli/ruby-debug/commands/breakpoints.rb +4 -2
  7. data/cli/ruby-debug/commands/edit.rb +3 -2
  8. data/cli/ruby-debug/commands/info.rb +5 -4
  9. data/cli/ruby-debug/commands/irb.rb +7 -8
  10. data/cli/ruby-debug/commands/list.rb +1 -1
  11. data/cli/ruby-debug/commands/set.rb +7 -1
  12. data/cli/ruby-debug/commands/show.rb +8 -3
  13. data/cli/ruby-debug/processor.rb +10 -4
  14. data/doc/rdebug.1 +1 -1
  15. data/rdbg.rb +1 -1
  16. data/test/base/base.rb +7 -4
  17. data/test/base/binding.rb +3 -12
  18. data/test/base/catchpoint.rb +2 -9
  19. data/test/base/load.rb +18 -14
  20. data/test/base/reload_bug.rb +2 -2
  21. data/test/cli/commands/catchpoint_test.rb +1 -13
  22. data/test/cli/commands/unit/regexp.rb +2 -8
  23. data/test/data/annotate.cmd +2 -2
  24. data/test/data/annotate.right +8 -8
  25. data/test/data/at-exit.cmd +4 -0
  26. data/test/data/at-exit.right +12 -0
  27. data/test/data/break_bad.cmd +3 -5
  28. data/test/data/break_bad.right +4 -6
  29. data/test/data/break_tracelines.cmd +9 -0
  30. data/test/data/break_tracelines.right +17 -0
  31. data/test/data/breakpoints-basename.cmd +2 -0
  32. data/test/data/breakpoints-basename.right +10 -0
  33. data/test/data/breakpoints.cmd +0 -1
  34. data/test/data/breakpoints.right +1 -3
  35. data/test/data/catch.cmd +1 -0
  36. data/test/data/catch.right +2 -0
  37. data/test/data/continue_bad.cmd +4 -0
  38. data/test/data/continue_bad.right +9 -0
  39. data/test/data/ctrl.right +2 -1
  40. data/test/data/dollar-0.right +3 -2
  41. data/test/data/dollar-0a.right +1 -0
  42. data/test/data/dollar-0b.right +1 -0
  43. data/test/data/edit.cmd +1 -1
  44. data/test/data/edit.right +4 -4
  45. data/test/data/emacs_basic.cmd +1 -34
  46. data/test/data/emacs_basic.right +10 -92
  47. data/test/data/frame.cmd +0 -3
  48. data/test/data/frame.right +0 -4
  49. data/test/data/info-file-break.cmd +4 -0
  50. data/test/data/info-file-break.right +11 -0
  51. data/test/data/info-thread.right +4 -4
  52. data/test/data/info-var-bug2.right +2 -2
  53. data/test/data/info.cmd +0 -1
  54. data/test/data/info.right +1 -5
  55. data/test/data/linetrace-jruby.right +23 -0
  56. data/test/data/list.right +13 -13
  57. data/test/data/output.right +4 -4
  58. data/test/data/post-mortem-osx.right +5 -4
  59. data/test/data/quit.right +9 -0
  60. data/test/data/raise-jruby.right +26 -0
  61. data/test/data/raise.right +1 -1
  62. data/test/data/save.cmd +1 -0
  63. data/test/data/save.right +4 -2
  64. data/test/data/stepping.cmd +2 -2
  65. data/test/data/stepping.right +4 -4
  66. data/test/data/test-init.right +2 -2
  67. data/test/data/trace-jruby.right +14 -0
  68. data/test/example/a/example.rb +1 -0
  69. data/test/example/at-exit.rb +3 -0
  70. data/test/example/b/example.rb +1 -0
  71. data/test/{bp_loop_issue.rb → example/bp_loop_issue.rb} +0 -0
  72. data/test/example/breakpoints-basename.rb +2 -0
  73. data/test/{brkpt-class-bug.rb → example/brkpt-class-bug.rb} +0 -0
  74. data/test/{classes.rb → example/classes.rb} +0 -0
  75. data/test/{dollar-0.rb → example/dollar-0.rb} +1 -0
  76. data/test/{except-bug1.rb → example/except-bug1.rb} +0 -0
  77. data/test/file with space.rb b/data/test/example/file with → space.rb +0 -0
  78. data/test/{gcd.rb → example/gcd.rb} +0 -0
  79. data/test/{info-var-bug.rb → example/info-var-bug.rb} +0 -0
  80. data/test/{info-var-bug2.rb → example/info-var-bug2.rb} +0 -0
  81. data/test/{null.rb → example/null.rb} +0 -0
  82. data/test/{output.rb → example/output.rb} +0 -0
  83. data/test/{pm-bug.rb → example/pm-bug.rb} +0 -0
  84. data/test/{pm.rb → example/pm.rb} +0 -0
  85. data/test/{raise.rb → example/raise.rb} +0 -0
  86. data/test/helper.rb +52 -34
  87. data/test/rdebug-save.1 +2 -2
  88. data/test/test-annotate.rb +4 -16
  89. data/test/test-at-exit.rb +13 -0
  90. data/test/test-break-bad.rb +14 -25
  91. data/test/test-breakpoints.rb +13 -14
  92. data/test/test-brkpt-class-bug.rb +3 -16
  93. data/test/test-catch.rb +3 -15
  94. data/test/test-condition.rb +3 -15
  95. data/test/test-display.rb +3 -15
  96. data/test/test-dollar-0.rb +23 -35
  97. data/test/test-edit.rb +4 -16
  98. data/test/test-emacs-basic.rb +4 -17
  99. data/test/test-enable.rb +3 -15
  100. data/test/test-except-bug1.rb +6 -21
  101. data/test/test-file-with-space.rb +3 -15
  102. data/test/test-finish.rb +11 -23
  103. data/test/test-frame.rb +14 -20
  104. data/test/test-hist.rb +6 -10
  105. data/test/test-info-thread.rb +13 -21
  106. data/test/test-info-var.rb +20 -37
  107. data/test/test-info.rb +16 -15
  108. data/test/test-list.rb +3 -14
  109. data/test/test-method.rb +9 -23
  110. data/test/test-output.rb +3 -16
  111. data/test/test-pm.rb +16 -38
  112. data/test/test-quit.rb +3 -20
  113. data/test/test-raise.rb +3 -15
  114. data/test/test-save.rb +12 -21
  115. data/test/test-setshow.rb +3 -15
  116. data/test/test-source.rb +3 -15
  117. data/test/test-stepping.rb +3 -15
  118. data/test/test-trace.rb +22 -45
  119. metadata +199 -159
  120. data/VERSION +0 -3
  121. data/cli/ruby-debug/commands/continue.RB +0 -48
  122. data/cli/ruby-debug/commands/disassemble.RB +0 -38
  123. data/cli/ruby-debug/commands/raise.RB +0 -41
  124. data/cli/ruby-debug/commands/source.RB +0 -44
  125. data/cli/ruby-debug/processor.RB +0 -484
  126. data/runner.sh +0 -7
  127. data/test/except-bug2.rb +0 -7
  128. data/test/scope-test.rb +0 -8
  129. data/test/tvar.rb +0 -3
@@ -12,6 +12,10 @@ module Debugger
12
12
  attr_reader :processor
13
13
  attr_reader :commands
14
14
 
15
+ # optional argument passed passed in callback. For catchpoints it is
16
+ # the catch object. For breakpoints it is the breakpoint object.
17
+ attr_reader :event_arg
18
+
15
19
  # Format _msg_ with gdb-style annotation header.
16
20
  def afmt(msg, newline="\n")
17
21
  "\032\032#{msg}#{newline}"
@@ -147,6 +151,7 @@ module Debugger
147
151
  # This is a callback routine when the debugged program hits a
148
152
  # breakpoint event. For example ruby-debug-base calls this.
149
153
  def at_breakpoint(context, breakpoint)
154
+ @event_arg = breakpoint
150
155
  aprint 'stopped' if Debugger.annotate.to_i > 2
151
156
  n = Debugger.breakpoints.index(breakpoint) + 1
152
157
  file = CommandProcessor.canonic_file(breakpoint.source)
@@ -161,6 +166,7 @@ module Debugger
161
166
  # This is a callback routine when the debugged program hits a
162
167
  # catchpoint. For example ruby-debug-base calls this.
163
168
  def at_catchpoint(context, excpt)
169
+ @event_arg = excpt
164
170
  aprint 'stopped' if Debugger.annotate.to_i > 2
165
171
  file = CommandProcessor.canonic_file(context.frame_file(0))
166
172
  line = context.frame_line(0)
@@ -180,12 +186,12 @@ module Debugger
180
186
  return if defined?(Debugger::RDEBUG_FILE) &&
181
187
  Debugger::RDEBUG_FILE == file # Don't trace ourself
182
188
  @last_file = CommandProcessor.canonic_file(file)
183
- file = CommandProcessor.canonic_file(file)
184
- unless file == @last_file and @last_line == line and
189
+ canonic_file = CommandProcessor.canonic_file(file)
190
+ unless canonic_file == @last_file and @last_line == line and
185
191
  Command.settings[:tracing_plus]
186
192
  print "Tracing(%d):%s:%s %s",
187
- context.thnum, file, line, Debugger.line_at(file, line)
188
- @last_file = file
193
+ context.thnum, canonic_file, line, Debugger.line_at(file, line)
194
+ @last_file = canonic_file
189
195
  @last_line = line
190
196
  end
191
197
  always_run(context, file, line, 2)
data/doc/rdebug.1 CHANGED
@@ -1,4 +1,4 @@
1
- .\" $Id: rdebug.1 516 2007-12-31 05:55:24Z rockyb $
1
+ .\" $Id$
2
2
  .TH rdebug 1
3
3
  .SH NAME
4
4
  rdebug \- Fast Ruby debugger
data/rdbg.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  #!/usr/bin/env ruby
3
- # $Id: rdbg.rb 756 2008-03-13 02:15:04Z rockyb $
3
+ # $Id$
4
4
 
5
5
  # Use this to run rdebug without installing it. We assume that the
6
6
  # library directories are stored at the same level the directory
data/test/base/base.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
- require 'test/unit'
2
+ require File.expand_path("../../helper", __FILE__)
3
3
 
4
4
  # Some tests of Debugger module in C extension ruby_debug
5
5
  class TestRubyDebug < Test::Unit::TestCase
6
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'ext')
7
- require 'ruby_debug'
8
- $:.shift
6
+ def test_version
7
+ assert(defined?(Debugger::VERSION))
8
+ end
9
9
 
10
10
  # test current_context
11
11
  def test_current_context
@@ -26,6 +26,7 @@ class TestRubyDebug < Test::Unit::TestCase
26
26
  assert_equal(1, Debugger.current_context.stack_size)
27
27
  assert_equal(TestRubyDebug, Debugger.current_context.frame_class)
28
28
  assert_equal(false, Debugger.current_context.dead?, 'Not dead yet!')
29
+ ensure
29
30
  Debugger.stop
30
31
  assert_equal(false, Debugger.started?,
31
32
  'Debugger should no longer be started.')
@@ -47,6 +48,7 @@ class TestRubyDebug < Test::Unit::TestCase
47
48
  'There should only be one context.')
48
49
  assert_equal(Array, a.class,
49
50
  'Context should be an array.')
51
+ ensure
50
52
  Debugger.stop
51
53
  assert_equal(false, Debugger.started?,
52
54
  'debugger should no longer be started.')
@@ -68,6 +70,7 @@ class TestRubyDebug < Test::Unit::TestCase
68
70
  Debugger.remove_breakpoint(1)
69
71
  assert_equal(0, Debugger.breakpoints.size,
70
72
  'There should no longer be any breakpoints set.')
73
+ ensure
71
74
  Debugger.stop
72
75
  end
73
76
  end
data/test/base/binding.rb CHANGED
@@ -1,18 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
2
+ require File.expand_path("../../helper", __FILE__)
4
3
 
5
4
  # Test binding_n command
6
5
  class TestBinding < Test::Unit::TestCase
7
-
8
- SRC_DIR = File.expand_path(File.dirname(__FILE__)) unless
9
- defined?(SRC_DIR)
10
- %w(ext lib).each do |dir|
11
- $:.unshift File.join(SRC_DIR, '..', '..', dir)
12
- end
13
- require File.join(SRC_DIR, '..', '..', 'lib', 'ruby-debug-base')
14
- $:.shift; $:.shift
15
-
16
6
  def test_basic
17
7
  def inside_fn
18
8
  s = 'some other string'
@@ -24,8 +14,9 @@ class TestBinding < Test::Unit::TestCase
24
14
  Debugger.start
25
15
  b = Kernel::binding_n(0)
26
16
  y = eval('s', b)
27
- assert_equal(y, s)
17
+ assert_equal(s, y)
28
18
  inside_fn
19
+ ensure
29
20
  Debugger.stop
30
21
  end
31
22
  end
@@ -1,15 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
- require 'test/unit'
2
+ require File.expand_path("../../helper", __FILE__)
3
3
 
4
4
  # Test catchpoint in C ruby_debug extension.
5
5
 
6
6
  class TestRubyDebugCatchpoint < Test::Unit::TestCase
7
-
8
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'ext')
9
- require 'ruby_debug'
10
- $:.shift
11
-
12
- # test current_context
13
7
  def test_catchpoints
14
8
  assert_raise(RuntimeError) {Debugger.catchpoints}
15
9
  Debugger.start_
@@ -19,8 +13,7 @@ class TestRubyDebugCatchpoint < Test::Unit::TestCase
19
13
  Debugger.add_catchpoint('RuntimeError')
20
14
  assert_equal(['RuntimeError', 'ZeroDivisionError'],
21
15
  Debugger.catchpoints.keys.sort)
16
+ ensure
22
17
  Debugger.stop
23
18
  end
24
-
25
19
  end
26
-
data/test/base/load.rb CHANGED
@@ -1,22 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
- require 'test/unit'
2
+ require File.expand_path("../../helper", __FILE__)
3
3
 
4
4
  # Test of Debugger.debug_load in C extension ruby_debug.so
5
5
  class TestDebugLoad < Test::Unit::TestCase
6
-
7
- @@src_dir = File.dirname(__FILE__)
8
- $:.unshift File.join(@@src_dir, '..', '..', 'ext')
9
- require 'ruby_debug'
10
- $:.shift
11
-
12
- class << self
6
+ class << self
13
7
  def at_line(file, line)
14
8
  @@at_line = [File.basename(file), line]
15
9
  end
16
10
  end
17
11
 
18
- Debugger::PROG_SCRIPT = File.join(@@src_dir, '..', 'gcd.rb')
19
-
20
12
  class Debugger::Context
21
13
  def at_line(file, line)
22
14
  TestDebugLoad::at_line(file, line)
@@ -24,17 +16,29 @@ class TestDebugLoad < Test::Unit::TestCase
24
16
  end
25
17
 
26
18
  def test_debug_load
19
+ src_dir = File.dirname(__FILE__)
20
+ prog_script = File.join(src_dir, '..', 'example', 'gcd.rb')
21
+
27
22
  # Without stopping
28
- bt = Debugger.debug_load(Debugger::PROG_SCRIPT, false)
23
+ bt = Debugger.debug_load(prog_script, false)
29
24
  assert_equal(nil, bt)
25
+ assert(Debugger.started?)
26
+ Debugger.stop
27
+
30
28
  # With stopping
31
- bt = Debugger.debug_load(Debugger::PROG_SCRIPT, true)
29
+ bt = Debugger.debug_load(prog_script, true)
32
30
  assert_equal(nil, bt)
33
31
  assert_equal(['gcd.rb', 4], @@at_line)
32
+ assert(Debugger.started?)
33
+ Debugger.stop
34
34
 
35
35
  # Test that we get a proper backtrace on a script that raises 'abc'
36
- prog_script = File.join(@@src_dir, '..', 'raise.rb')
36
+ prog_script = File.join(src_dir, '..', 'example', 'raise.rb')
37
37
  bt = Debugger.debug_load(prog_script, false)
38
- assert_equal(bt.to_s, 'abc')
38
+ assert_equal('abc', bt.to_s)
39
+ assert(Debugger.started?)
40
+ Debugger.stop
41
+ ensure
42
+ Debugger.stop if Debugger.started?
39
43
  end
40
44
  end
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
- require 'test/unit'
2
+ require File.expand_path("../../helper", __FILE__)
3
+
3
4
  class TestReloadBug < Test::Unit::TestCase
4
5
  def test_reload_bug
5
- top_srcdir = File.join(File.dirname(__FILE__), '..', '..')
6
6
  assert_equal({}, Debugger::source_reload)
7
7
  end
8
8
  end
@@ -1,18 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
2
+ require File.expand_path("../../../helper", __FILE__)
4
3
 
5
4
  class TestCatchCommand < Test::Unit::TestCase
6
-
7
- base_dir = File.expand_path(File.join(File.dirname(__FILE__),
8
- '..', '..', '..'))
9
-
10
- %w(ext lib cli).each do |dir|
11
- $: << File.join(base_dir, dir)
12
- end
13
-
14
- require File.join(base_dir, 'cli', 'ruby-debug')
15
-
16
5
  class MockState
17
6
  attr_accessor :message
18
7
  def context; end
@@ -32,5 +21,4 @@ class TestCatchCommand < Test::Unit::TestCase
32
21
  end
33
22
  assert_equal(nil, state.message)
34
23
  end
35
-
36
24
  end
@@ -1,12 +1,7 @@
1
- require 'test/unit'
2
-
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path("../../../../helper", __FILE__)
3
3
 
4
4
  class TestCommandREs < Test::Unit::TestCase
5
- base_dir=File.expand_path(File.join(File.dirname(__FILE__),
6
- '..', '..', '..', '..',
7
- 'cli', 'ruby-debug'))
8
- require File.join(base_dir, 'command')
9
- require File.join(base_dir, 'commands', 'frame')
10
5
  include Debugger
11
6
 
12
7
  def test_quit
@@ -39,4 +34,3 @@ class TestCommandREs < Test::Unit::TestCase
39
34
  assert_equal(nil, c.regexp.match('dow'))
40
35
  end
41
36
  end
42
-
@@ -3,7 +3,7 @@
3
3
  # ********************************************************
4
4
  set debuggertesting on
5
5
  set callstyle last
6
- set force off
6
+ set different off
7
7
  set annotate 3
8
8
  # Get into gcd
9
9
  step 2
@@ -21,7 +21,7 @@ b 12
21
21
  display 1+2
22
22
  # undisplay should trigger display annotation
23
23
  undisplay 1
24
- step
24
+ step+
25
25
  # Test error annotations
26
26
  up 10
27
27
  frame 100
@@ -7,8 +7,8 @@ def gcd(a, b)
7
7
  Currently testing the debugger is on.
8
8
  # set callstyle last
9
9
  Frame call-display style is last.
10
- # set force off
11
- force-stepping is off.
10
+ # set different off
11
+ different-line stepping is off.
12
12
  # set annotate 3
13
13
  Annotation level is 3
14
14
  # # Get into gcd
@@ -71,7 +71,7 @@ Num Enb What
71
71
  # undisplay 1
72
72
  display
73
73
  
74
- # step
74
+ # step+
75
75
  display
76
76
  
77
77
  starting
@@ -83,7 +83,7 @@ Num Enb What
83
83
  display
84
84
  
85
85
  stack
86
- --> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:6
86
+ --> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:10
87
87
  #1 at line gcd.rb:18
88
88
  
89
89
  variables
@@ -91,8 +91,8 @@ a = 3
91
91
  b = 5
92
92
  self = main
93
93
  
94
- source gcd.rb:6
95
- if a > b
94
+ source gcd.rb:10
95
+ return nil if a <= 0
96
96
  # # Test error annotations
97
97
  # up 10
98
98
  error-begin
@@ -101,7 +101,7 @@ Adjusting would put us beyond the oldest (initial) frame.
101
101
  display
102
102
  
103
103
  stack
104
- --> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:6
104
+ --> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:10
105
105
  #1 at line gcd.rb:18
106
106
  
107
107
  variables
@@ -116,7 +116,7 @@ Adjusting would put us beyond the oldest (initial) frame.
116
116
  display
117
117
  
118
118
  stack
119
- --> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:6
119
+ --> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:10
120
120
  #1 at line gcd.rb:18
121
121
  
122
122
  variables
@@ -0,0 +1,4 @@
1
+ set debuggertesting on
2
+ break 2
3
+ c
4
+ c
@@ -0,0 +1,12 @@
1
+ at-exit.rb:1
2
+ at_exit do
3
+ # set debuggertesting on
4
+ Currently testing the debugger is on.
5
+ # break 2
6
+ Breakpoint 1 file at-exit.rb, line 2
7
+ # c
8
+ Breakpoint 1 at at-exit.rb:2
9
+ at-exit.rb:2
10
+ puts "Hello world!"
11
+ # c
12
+ Hello world!
@@ -5,14 +5,12 @@
5
5
  set debuggertesting on
6
6
  set callstyle last
7
7
  set autoeval off
8
+ set basename on
8
9
  # There aren't 100 lines in gcd.rb.
9
10
  break 100
10
- break gcd.rb:100
11
- # Line one isn't a valid stopping point.
12
- # It is a comment.
13
- break gcd.rb:1
11
+ break example/gcd.rb:100
14
12
  # This line is okay
15
- break gcd.rb:4
13
+ break example/gcd.rb:4
16
14
  # No class Foo.
17
15
  break Foo.bar
18
16
  q
@@ -10,17 +10,15 @@ Currently testing the debugger is on.
10
10
  Frame call-display style is last.
11
11
  # set autoeval off
12
12
  autoeval is off.
13
+ # set basename on
14
+ basename is on.
13
15
  # # There aren't 100 lines in gcd.rb.
14
16
  # break 100
15
17
  *** There are only 18 lines in file "gcd.rb".
16
- # break gcd.rb:100
18
+ # break example/gcd.rb:100
17
19
  *** There are only 18 lines in file "gcd.rb".
18
- # # Line one isn't a valid stopping point.
19
- # # It is a comment.
20
- # break gcd.rb:1
21
- *** Line 1 is not a stopping point in file "gcd.rb".
22
20
  # # This line is okay
23
- # break gcd.rb:4
21
+ # break example/gcd.rb:4
24
22
  Breakpoint 1 file gcd.rb, line 4
25
23
  # # No class Foo.
26
24
  # break Foo.bar
@@ -0,0 +1,9 @@
1
+ set debuggertesting on
2
+ set callstyle last
3
+ set autoeval off
4
+ set basename on
5
+ # Line one isn't a valid stopping point.
6
+ # It is a comment.
7
+ break example/gcd.rb:1
8
+ break 11
9
+ q
@@ -0,0 +1,17 @@
1
+ gcd.rb:4
2
+ def gcd(a, b)
3
+ # set debuggertesting on
4
+ Currently testing the debugger is on.
5
+ # set callstyle last
6
+ Frame call-display style is last.
7
+ # set autoeval off
8
+ autoeval is off.
9
+ # set basename on
10
+ basename is on.
11
+ # # Line one isn't a valid stopping point.
12
+ # # It is a comment.
13
+ # break example/gcd.rb:1
14
+ *** Line 1 is not a stopping point in file "gcd.rb".
15
+ # break 11
16
+ *** Line 11 is not a stopping point in file "gcd.rb".
17
+ # q
@@ -0,0 +1,2 @@
1
+ break example/b/example.rb:1
2
+ c