ruby-debug 0.10.1 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/CHANGES +7 -0
  2. data/ChangeLog +315 -278
  3. data/Rakefile +6 -6
  4. data/bin/rdebug +7 -3
  5. data/cli/ruby-debug.rb +2 -2
  6. data/cli/ruby-debug/commands/breakpoints.rb +15 -15
  7. data/cli/ruby-debug/commands/catchpoint.rb +18 -6
  8. data/cli/ruby-debug/commands/continue.rb +12 -6
  9. data/cli/ruby-debug/commands/info.rb +3 -3
  10. data/cli/ruby-debug/commands/irb.rb +2 -2
  11. data/cli/ruby-debug/commands/list.rb +1 -1
  12. data/cli/ruby-debug/commands/method.rb +44 -2
  13. data/cli/ruby-debug/commands/save.rb +16 -6
  14. data/cli/ruby-debug/commands/set.rb +11 -8
  15. data/cli/ruby-debug/commands/show.rb +28 -24
  16. data/cli/ruby-debug/commands/trace.rb +35 -11
  17. data/cli/ruby-debug/commands/variables.rb +47 -4
  18. data/cli/ruby-debug/interface.rb +28 -8
  19. data/cli/ruby-debug/processor.rb +6 -4
  20. data/rdbg.rb +0 -0
  21. data/test/base/base.rb +0 -0
  22. data/test/base/binding.rb +0 -0
  23. data/test/base/catchpoint.rb +0 -0
  24. data/test/bp_loop_issue.rb +3 -0
  25. data/test/classes.rb +11 -0
  26. data/test/cli/commands/catchpoint_test.rb +35 -0
  27. data/test/data/break_loop_bug.cmd +5 -0
  28. data/test/data/break_loop_bug.right +15 -0
  29. data/test/data/breakpoints.cmd +1 -1
  30. data/test/data/breakpoints.right +8 -12
  31. data/test/data/catch.cmd +17 -0
  32. data/test/data/catch.right +37 -0
  33. data/test/data/emacs_basic.right +2 -7
  34. data/test/data/frame.cmd +3 -0
  35. data/test/data/frame.right +4 -0
  36. data/test/data/method.cmd +10 -0
  37. data/test/data/method.right +21 -0
  38. data/test/data/methodsig.cmd +10 -0
  39. data/test/data/methodsig.right +20 -0
  40. data/test/data/output.right +0 -10
  41. data/test/data/quit.right +0 -9
  42. data/test/data/raise.right +1 -1
  43. data/test/data/save.cmd +33 -0
  44. data/test/data/save.right +59 -0
  45. data/test/data/setshow.cmd +13 -0
  46. data/test/data/setshow.right +25 -0
  47. data/test/dollar-0.rb +0 -0
  48. data/test/gcd-dbg.rb +0 -0
  49. data/test/helper.rb +24 -2
  50. data/test/pm-base.rb +0 -0
  51. data/test/pm.rb +0 -0
  52. data/test/raise.rb +0 -0
  53. data/test/tdebug.rb +5 -6
  54. data/test/test-annotate.rb +0 -0
  55. data/test/test-break-bad.rb +11 -0
  56. data/test/test-breakpoints.rb +0 -0
  57. data/test/test-catch.rb +25 -0
  58. data/test/test-condition.rb +0 -0
  59. data/test/test-ctrl.rb +0 -0
  60. data/test/test-display.rb +0 -0
  61. data/test/test-dollar-0.rb +0 -0
  62. data/test/test-edit.rb +0 -0
  63. data/test/test-emacs-basic.rb +2 -2
  64. data/test/test-enable.rb +0 -0
  65. data/test/test-finish.rb +0 -0
  66. data/test/test-frame.rb +11 -3
  67. data/test/test-help.rb +0 -0
  68. data/test/test-hist.rb +0 -0
  69. data/test/test-info-thread.rb +0 -0
  70. data/test/test-info-var.rb +0 -0
  71. data/test/test-info.rb +0 -0
  72. data/test/test-init.rb +3 -1
  73. data/test/test-list.rb +0 -0
  74. data/test/test-method.rb +34 -0
  75. data/test/test-output.rb +0 -0
  76. data/test/test-pm.rb +0 -0
  77. data/test/test-quit.rb +0 -0
  78. data/test/test-raise.rb +0 -0
  79. data/test/test-save.rb +25 -0
  80. data/test/test-setshow.rb +0 -0
  81. data/test/test-source.rb +0 -0
  82. data/test/test-stepping.rb +0 -0
  83. data/test/test-trace.rb +0 -0
  84. metadata +178 -155
  85. data/cli/ruby-debug/commands/disassemble.RB +0 -38
  86. data/test/except-bug2.rb +0 -7
@@ -0,0 +1,37 @@
1
+ pm.rb:3
2
+ def zero_div
3
+ # # ***************************************************
4
+ # # Test catch
5
+ # # ***************************************************
6
+ # set debuggertesting on
7
+ Currently testing the debugger is on.
8
+ # set autoeval off
9
+ autoeval is off.
10
+ # set basename on
11
+ basename is on.
12
+ # info catch
13
+ No exceptions set to be caught.
14
+ # catch ZeroDivisionError off
15
+ *** Catch for exception ZeroDivisionError not found.
16
+ # catch ZeroDivisionError off afdasdf
17
+ *** Unknown command: "catch ZeroDivisionError off afdasdf". Try "help".
18
+ # catch ZeroDivisionError
19
+ Catch exception ZeroDivisionError.
20
+ # info catch
21
+ ZeroDivisionError
22
+ # catch ZeroDivisionError off
23
+ Catch for exception ZeroDivisionError removed.
24
+ # info catch
25
+ No exceptions set to be caught.
26
+ # catch ZeroDivisionError
27
+ Catch exception ZeroDivisionError.
28
+ # c
29
+ Catchpoint at pm.rb:5: `divided by 0' (ZeroDivisionError)
30
+ from ../rdbg.rb:23:in `runner'
31
+ from ../rdbg.rb:32
32
+ pm.rb:5
33
+ 1/0
34
+ # where
35
+ --> #0 Object./ at line pm.rb:5
36
+ #1 at line pm.rb:8
37
+ # quit
@@ -42,9 +42,8 @@ return nil if a <= 0
42
42
  # info program
43
43
  Program stopped. It stopped at a breakpoint.
44
44
  # c 10
45
- Breakpoint 3 at Object:gcd
46
- gcd.rb:4
47
- def gcd(a, b)
45
+ gcd.rb:10
46
+ return nil if a <= 0
48
47
  # info break
49
48
  Num Enb What
50
49
  1 y at gcd.rb:6
@@ -52,7 +51,6 @@ Num Enb What
52
51
  2 y at gcd.rb:10
53
52
  breakpoint already hit 1 time
54
53
  3 y at Object:gcd
55
- breakpoint already hit 1 time
56
54
  # break foo
57
55
  *** Invalid breakpoint location: foo.
58
56
  # info break
@@ -62,7 +60,6 @@ Num Enb What
62
60
  2 y at gcd.rb:10
63
61
  breakpoint already hit 1 time
64
62
  3 y at Object:gcd
65
- breakpoint already hit 1 time
66
63
  # disable 1
67
64
  # info break
68
65
  Num Enb What
@@ -71,7 +68,6 @@ Num Enb What
71
68
  2 y at gcd.rb:10
72
69
  breakpoint already hit 1 time
73
70
  3 y at Object:gcd
74
- breakpoint already hit 1 time
75
71
  # enable breakpoint 1
76
72
  # enable br 10
77
73
  Enable breakpoints argument '10' needs to at most 3.
@@ -82,7 +78,6 @@ Num Enb What
82
78
  2 y at gcd.rb:10
83
79
  breakpoint already hit 1 time
84
80
  3 y at Object:gcd
85
- breakpoint already hit 1 time
86
81
  # # We should still be able to access 2
87
82
  # disable 2
88
83
  # enable
data/test/data/frame.cmd CHANGED
@@ -3,6 +3,9 @@
3
3
  # ***************************************************
4
4
  set debuggertesting on
5
5
  set callstyle last
6
+ # Invalid line number in continue command
7
+ continue 3
8
+ # This time, for sure!
6
9
  continue 6
7
10
  where
8
11
  up
@@ -7,6 +7,10 @@ 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
+ # # Invalid line number in continue command
11
+ # continue 3
12
+ *** Line 3 is not a stopping point in file "gcd.rb".
13
+ # # This time, for sure!
10
14
  # continue 6
11
15
  gcd.rb:6
12
16
  if a > b
@@ -0,0 +1,10 @@
1
+ # ********************************************************
2
+ # This tests the 'method' command
3
+ # ********************************************************
4
+ set debuggertesting on
5
+ set autoeval off
6
+ b 11
7
+ c
8
+ method Mine
9
+ m iv me
10
+ quit
@@ -0,0 +1,21 @@
1
+ classes.rb:1
2
+ class Mine
3
+ # # ********************************************************
4
+ # # This tests the 'method' command
5
+ # # ********************************************************
6
+ # set debuggertesting on
7
+ Currently testing the debugger is on.
8
+ # set autoeval off
9
+ autoeval is off.
10
+ # b 11
11
+ Breakpoint 1 file ./classes.rb, line 11
12
+ # c
13
+ Breakpoint 1 at classes.rb:11
14
+ classes.rb:11
15
+ metoo = Mine(new)
16
+ # method Mine
17
+ mymethod
18
+
19
+ # m iv me
20
+ @myvar = "init"
21
+ # quit
@@ -0,0 +1,10 @@
1
+ # ********************************************************
2
+ # This tests the 'method' command
3
+ # ********************************************************
4
+ set debuggertesting on
5
+ set autoeval off
6
+ b 3
7
+ c
8
+ method sig initialize
9
+ method sig mymethod
10
+ quit
@@ -0,0 +1,20 @@
1
+ classes.rb:1
2
+ class Mine
3
+ # # ********************************************************
4
+ # # This tests the 'method' command
5
+ # # ********************************************************
6
+ # set debuggertesting on
7
+ Currently testing the debugger is on.
8
+ # set autoeval off
9
+ autoeval is off.
10
+ # b 3
11
+ Breakpoint 1 file ./classes.rb, line 3
12
+ # c
13
+ Breakpoint 1 at classes.rb:3
14
+ classes.rb:3
15
+ @myvar = 'init'
16
+ # method sig initialize
17
+ Mine#initialize()
18
+ # method sig mymethod
19
+ Mine#mymethod(a, b=5, &block)
20
+ # quit
@@ -29,13 +29,3 @@ puts "two"
29
29
  # step
30
30
  starting
31
31
  two
32
- stopped
33
- stack
34
- --> #0 debug_program at line tdebug.rb:53
35
- 
36
- variables
37
- self = main
38
- 
39
- source tdebug.rb:53
40
- if bt
41
- # quit
data/test/data/quit.right CHANGED
@@ -1,9 +0,0 @@
1
- tdebug.rb:53
2
- if bt
3
- # # ***************************************************
4
- # # This tests the quit.
5
- # # ***************************************************
6
- # set debuggertesting on
7
- Currently testing the debugger is on.
8
- # # FIXME need to test --no-quit.
9
- # quit
@@ -19,7 +19,7 @@ Catch exception 5.
19
19
  ./raise.rb:3
20
20
  ./tdebug.rb:52:in `debug_load'
21
21
  ./tdebug.rb:52:in `debug_program'
22
- ./tdebug.rb:243
22
+ ./tdebug.rb:242
23
23
  ../rdbg.rb:23:in `load'
24
24
  ../rdbg.rb:23:in `runner'
25
25
  ../rdbg.rb:32
@@ -0,0 +1,33 @@
1
+ # This tests the functioning of some set/show debugger commands
2
+ set debuggertesting on
3
+ ### *******************************
4
+ ### *** save/source commands ***
5
+ ### *******************************
6
+ ########################################
7
+ ### test args and baseneme...
8
+ ########################################
9
+ set basename off
10
+ set autoeval off
11
+ # Should have nothing set
12
+ info break
13
+ info catch
14
+ # Should save nothing
15
+ save temp
16
+ eval File.open("temp").readlines
17
+ # Should read in nothing
18
+ source temp
19
+ info break
20
+ # Now try saving something interesting
21
+ break 10
22
+ catch RuntimeError
23
+ save temp
24
+ eval File.open("temp").readlines
25
+ # FIXME: The below is broken
26
+ ## Change parameters above
27
+ ## catch RuntimeError off
28
+ ## info catch
29
+ ##set listsize 55
30
+ source temp
31
+ ##info break
32
+ ##info catch
33
+ ##show listsize
@@ -0,0 +1,59 @@
1
+ gcd.rb:4
2
+ def gcd(a, b)
3
+ # # This tests the functioning of some set/show debugger commands
4
+ # set debuggertesting on
5
+ Currently testing the debugger is on.
6
+ # ### *******************************
7
+ # ### *** save/source commands ***
8
+ # ### *******************************
9
+ # ########################################
10
+ # ### test args and baseneme...
11
+ # ########################################
12
+ # set basename off
13
+ basename is off.
14
+ # set autoeval off
15
+ autoeval is off.
16
+ # # Should have nothing set
17
+ # info break
18
+ No breakpoints.
19
+ # info catch
20
+ No exceptions set to be caught.
21
+ # # Should save nothing
22
+ # save temp
23
+ Saved to 'temp'
24
+ # eval File.open("temp").readlines
25
+ ["set autoeval off\n", "set basename off\n", "set debuggertesting on\n", "set autolist off\n", "set autoirb off\n"]
26
+ # # Should read in nothing
27
+ # source temp
28
+ autoeval is off.
29
+ basename is off.
30
+ Currently testing the debugger is on.
31
+ autolist is off.
32
+ autoirb is off.
33
+ # info break
34
+ No breakpoints.
35
+ # # Now try saving something interesting
36
+ # break 10
37
+ Breakpoint 1 file ./gcd.rb, line 10
38
+ # catch RuntimeError
39
+ Catch exception RuntimeError.
40
+ # save temp
41
+ Saved to 'temp'
42
+ # eval File.open("temp").readlines
43
+ ["break gcd.rb:10\n", "catch RuntimeError\n", "set autoeval off\n", "set basename on\n", "set debuggertesting on\n", "set autolist off\n", "set autoirb off\n"]
44
+ # # FIXME: The below is broken
45
+ # ## Change parameters above
46
+ # ## catch RuntimeError off
47
+ # ## info catch
48
+ # ##set listsize 55
49
+ # source temp
50
+ Breakpoint 2 file gcd.rb, line 10
51
+ Catch exception RuntimeError.
52
+ autoeval is off.
53
+ basename is on.
54
+ Currently testing the debugger is on.
55
+ autolist is off.
56
+ autoirb is off.
57
+ # ##info break
58
+ # ##info catch
59
+ # ##show listsize
@@ -41,3 +41,16 @@ set history save off
41
41
  show history save
42
42
  set history save 1
43
43
  show history save
44
+ #### Test 'autoeval'...
45
+ set autoeval on
46
+ puts 'printed via autoeval'
47
+ set autoeval off
48
+ puts 'autoeval should not run this'
49
+ #### Test 'callstyle'...
50
+ set callstyle
51
+ set callstyle short
52
+ set callstyle last
53
+ set callstyle tracked
54
+ set callstyle foo
55
+
56
+
@@ -70,3 +70,28 @@ Saving of history save is off.
70
70
  Saving of history save is on.
71
71
  # show history save
72
72
  Saving of history save is on.
73
+ # #### Test 'autoeval'...
74
+ # set autoeval on
75
+ autoeval is on.
76
+ # puts 'printed via autoeval'
77
+ printed via autoeval
78
+ nil
79
+ # set autoeval off
80
+ autoeval is off.
81
+ # puts 'autoeval should not run this'
82
+ *** Unknown command: "puts 'autoeval should not run this'". Try "help".
83
+ # #### Test 'callstyle'...
84
+ # set callstyle
85
+ Invalid call style . Should be one of: 'short', 'last', or 'tracked'.
86
+ Frame call-display style is last.
87
+ # set callstyle short
88
+ Frame call-display style is short.
89
+ # set callstyle last
90
+ Frame call-display style is last.
91
+ # set callstyle tracked
92
+ Frame call-display style is tracked.
93
+ # set callstyle foo
94
+ Invalid call style foo. Should be one of: 'short', 'last', or 'tracked'.
95
+ Frame call-display style is tracked.
96
+ #
97
+ #
data/test/dollar-0.rb CHANGED
File without changes
data/test/gcd-dbg.rb CHANGED
File without changes
data/test/helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # Some common routines used in testing.
2
2
 
3
3
  require 'fileutils'
4
+ require 'yaml'
4
5
  # require 'diff/lcs'
5
6
  # require 'diff/lcs/hunk'
6
7
 
@@ -21,12 +22,13 @@ module TestHelper
21
22
  end
22
23
 
23
24
  ENV['RDEBUG'] = debug_pgm
25
+
24
26
  if old_code
25
27
  cmd = "/bin/sh #{File.join('..', 'runner.sh')} #{args} >#{outfile}"
26
28
  else
27
- cmd = "../rdbg.rb #{args} >#{outfile}"
29
+ cmd = "#{"#{load_ruby} #{load_params} "}../rdbg.rb #{args} > #{outfile}"
28
30
  end
29
- # puts cmd
31
+ # puts "'#{cmd}'"
30
32
  output = `#{cmd}`
31
33
 
32
34
  got_lines = File.read(outfile).split(/\n/)
@@ -112,6 +114,26 @@ module TestHelper
112
114
  # # Handle the last remaining hunk
113
115
  # output << oldhunk.diff(format) << '\n'
114
116
  # end
117
+
118
+ # Loads key from the _config_._yaml_ file.
119
+ def config_load(key, may_be_nil=false, default_value='')
120
+ conf = File.join('config.private.yaml') # try private first
121
+ conf = File.join('config.yaml') unless File.exists?(conf)
122
+ value = YAML.load_file(conf)[key]
123
+ assert_not_nil(value, "#{key} is set in config.yaml") unless may_be_nil
124
+ value || default_value
125
+ end
126
+ module_function :config_load
115
127
 
128
+ def load_ruby
129
+ config_load('ruby', true)
130
+ end
131
+ module_function :load_ruby
132
+
133
+ def load_params
134
+ config_load('ruby_params', true)
135
+ end
136
+ module_function :load_params
137
+
116
138
  end
117
139
 
data/test/pm-base.rb CHANGED
File without changes
data/test/pm.rb CHANGED
File without changes
data/test/raise.rb CHANGED
File without changes
data/test/tdebug.rb CHANGED
@@ -49,7 +49,7 @@ def debug_program(options)
49
49
  end
50
50
  $0[0..-1] = d0
51
51
  end
52
- bt = Debugger.debug_load(Debugger::PROG_SCRIPT, !options.nostop)
52
+ bt = Debugger.debug_load(Debugger::PROG_SCRIPT, !options.nostop, false)
53
53
  if bt
54
54
  if options.post_mortem
55
55
  Debugger.handle_post_mortem(bt)
@@ -188,9 +188,12 @@ trap('INT') { Debugger.interrupt_last }
188
188
  Debugger.wait_connection = false
189
189
  Debugger.keep_frame_binding = options.frame_bind
190
190
 
191
- # activate debugger
191
+ # Add Debugger trace hook.
192
192
  Debugger.start
193
193
 
194
+ # start control thread
195
+ Debugger.start_control(options.host, options.cport) if options.control
196
+
194
197
  # activate post-mortem
195
198
  Debugger.post_mortem if options.post_mortem
196
199
 
@@ -210,10 +213,6 @@ if $?.exitstatus != 0 and RUBY_PLATFORM !~ /mswin/
210
213
  puts output
211
214
  exit $?.exitstatus
212
215
  end
213
- # activate debugger
214
- Debugger.start
215
- # start control thread
216
- Debugger.start_control(options.host, options.cport) if options.control
217
216
 
218
217
  # load initrc script (e.g. .rdebugrc)
219
218
  Debugger.run_init_script(StringIO.new) unless options.nx