ruby-debug 0.10.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. data/CHANGES +94 -2
  2. data/ChangeLog +5225 -0
  3. data/README +30 -1
  4. data/Rakefile +55 -24
  5. data/bin/rdebug +249 -128
  6. data/cli/ruby-debug/command.rb +30 -3
  7. data/cli/ruby-debug/commands/breakpoints.rb +54 -24
  8. data/cli/ruby-debug/commands/catchpoint.rb +13 -12
  9. data/cli/ruby-debug/commands/condition.rb +49 -0
  10. data/cli/ruby-debug/commands/continue.rb +32 -0
  11. data/cli/ruby-debug/commands/control.rb +19 -43
  12. data/cli/ruby-debug/commands/disassemble.RB +38 -0
  13. data/cli/ruby-debug/commands/display.rb +1 -1
  14. data/cli/ruby-debug/commands/edit.rb +48 -0
  15. data/cli/ruby-debug/commands/enable.rb +78 -35
  16. data/cli/ruby-debug/commands/eval.rb +6 -5
  17. data/cli/ruby-debug/commands/finish.rb +42 -0
  18. data/cli/ruby-debug/commands/frame.rb +64 -33
  19. data/cli/ruby-debug/commands/help.rb +19 -15
  20. data/cli/ruby-debug/commands/info.rb +295 -36
  21. data/cli/ruby-debug/commands/irb.rb +3 -1
  22. data/cli/ruby-debug/commands/list.rb +27 -50
  23. data/cli/ruby-debug/commands/quit.rb +38 -0
  24. data/cli/ruby-debug/commands/reload.rb +40 -0
  25. data/cli/ruby-debug/commands/save.rb +80 -0
  26. data/cli/ruby-debug/commands/{settings.rb → set.rb} +50 -12
  27. data/cli/ruby-debug/commands/show.rb +83 -27
  28. data/cli/ruby-debug/commands/source.rb +36 -0
  29. data/cli/ruby-debug/commands/stepping.rb +36 -72
  30. data/cli/ruby-debug/commands/threads.rb +32 -23
  31. data/cli/ruby-debug/commands/variables.rb +34 -4
  32. data/cli/ruby-debug/helper.rb +10 -75
  33. data/cli/ruby-debug/interface.rb +72 -9
  34. data/cli/ruby-debug/processor.rb +203 -100
  35. data/doc/rdebug.1 +7 -2
  36. data/rdbg.rb +33 -0
  37. data/test/{test-ruby-debug-base.rb → base/base.rb} +27 -29
  38. data/test/base/binding.rb +31 -0
  39. data/test/base/catchpoint.rb +26 -0
  40. data/test/base/load.rb +40 -0
  41. data/test/data/annotate.cmd +29 -0
  42. data/test/data/annotate.right +137 -0
  43. data/test/data/break_bad.cmd +18 -0
  44. data/test/data/break_bad.right +28 -0
  45. data/test/data/breakpoints.cmd +38 -0
  46. data/test/data/breakpoints.right +98 -0
  47. data/test/data/condition.cmd +28 -0
  48. data/test/data/condition.right +65 -0
  49. data/test/data/ctrl.cmd +23 -0
  50. data/test/data/ctrl.right +69 -0
  51. data/test/{display.cmd → data/display.cmd} +7 -1
  52. data/test/{display.right → data/display.right} +13 -6
  53. data/test/data/dollar-0.right +2 -0
  54. data/test/data/dollar-0a.right +2 -0
  55. data/test/data/dollar-0b.right +2 -0
  56. data/test/data/edit.cmd +12 -0
  57. data/test/data/edit.right +19 -0
  58. data/test/{breakpoints.cmd → data/emacs_basic.cmd} +0 -0
  59. data/test/{breakpoints.right → data/emacs_basic.right} +24 -12
  60. data/test/data/enable.cmd +20 -0
  61. data/test/data/enable.right +36 -0
  62. data/test/data/finish.cmd +16 -0
  63. data/test/data/finish.right +43 -0
  64. data/test/{frame.cmd → data/frame.cmd} +2 -0
  65. data/test/{frame.right → data/frame.right} +8 -2
  66. data/test/{help.cmd → data/help.cmd} +8 -0
  67. data/test/data/help.right +21 -0
  68. data/test/data/history.right +7 -0
  69. data/test/data/info-thread.cmd +13 -0
  70. data/test/data/info-thread.right +37 -0
  71. data/test/data/info-var-bug2.cmd +5 -0
  72. data/test/data/info-var-bug2.right +10 -0
  73. data/test/{info-var.cmd → data/info-var.cmd} +3 -3
  74. data/test/{info-var.right → data/info-var.right} +20 -15
  75. data/test/{info.cmd → data/info.cmd} +10 -1
  76. data/test/data/info.right +65 -0
  77. data/test/data/linetrace.cmd +6 -0
  78. data/test/data/linetrace.right +32 -0
  79. data/test/data/linetracep.cmd +7 -0
  80. data/test/data/linetracep.right +25 -0
  81. data/test/data/list.cmd +19 -0
  82. data/test/data/list.right +127 -0
  83. data/test/data/noquit.right +1 -0
  84. data/test/data/output.cmd +6 -0
  85. data/test/data/output.right +41 -0
  86. data/test/data/post-mortem-next.cmd +8 -0
  87. data/test/data/post-mortem-next.right +14 -0
  88. data/test/data/post-mortem-osx.right +31 -0
  89. data/test/data/post-mortem.cmd +13 -0
  90. data/test/data/post-mortem.right +31 -0
  91. data/test/{quit.cmd → data/quit.cmd} +2 -5
  92. data/test/data/quit.right +9 -0
  93. data/test/data/raise.cmd +11 -0
  94. data/test/data/raise.right +26 -0
  95. data/test/{setshow.cmd → data/setshow.cmd} +0 -1
  96. data/test/{setshow.right → data/setshow.right} +0 -1
  97. data/test/data/source.cmd +5 -0
  98. data/test/data/source.right +15 -0
  99. data/test/{stepping.cmd → data/stepping.cmd} +6 -2
  100. data/test/{stepping.right → data/stepping.right} +13 -3
  101. data/test/data/test-init-cygwin.right +7 -0
  102. data/test/data/test-init-osx.right +4 -0
  103. data/test/data/test-init.right +5 -0
  104. data/test/data/trace.right +23 -0
  105. data/test/dollar-0.rb +5 -0
  106. data/test/except-bug2.rb +7 -0
  107. data/test/gcd-dbg-nox.rb +31 -0
  108. data/test/gcd-dbg.rb +30 -0
  109. data/test/helper.rb +44 -14
  110. data/test/info-var-bug.rb +2 -0
  111. data/test/info-var-bug2.rb +2 -0
  112. data/test/null.rb +1 -0
  113. data/test/output.rb +2 -0
  114. data/test/pm-base.rb +22 -0
  115. data/test/pm.rb +11 -0
  116. data/test/raise.rb +3 -0
  117. data/test/tdebug.rb +88 -40
  118. data/test/test-annotate.rb +25 -0
  119. data/test/test-break-bad.rb +25 -0
  120. data/test/test-breakpoints.rb +14 -17
  121. data/test/test-condition.rb +25 -0
  122. data/test/test-ctrl.rb +54 -0
  123. data/test/test-display.rb +15 -15
  124. data/test/test-dollar-0.rb +39 -0
  125. data/test/test-edit.rb +26 -0
  126. data/test/test-emacs-basic.rb +26 -0
  127. data/test/test-enable.rb +25 -0
  128. data/test/test-finish.rb +34 -0
  129. data/test/test-frame.rb +15 -16
  130. data/test/test-help.rb +34 -18
  131. data/test/test-hist.rb +68 -0
  132. data/test/test-info-thread.rb +32 -0
  133. data/test/test-info-var.rb +28 -14
  134. data/test/test-info.rb +15 -17
  135. data/test/test-init.rb +41 -0
  136. data/test/test-list.rb +25 -0
  137. data/test/test-output.rb +26 -0
  138. data/test/test-pm.rb +46 -0
  139. data/test/test-quit.rb +19 -17
  140. data/test/test-raise.rb +25 -0
  141. data/test/test-setshow.rb +14 -13
  142. data/test/test-source.rb +25 -0
  143. data/test/test-stepping.rb +14 -14
  144. data/test/test-trace.rb +63 -0
  145. data/test/thread1.rb +26 -0
  146. metadata +125 -31
  147. data/cli/ruby-debug/commands/script.rb +0 -64
  148. data/runner.sh +0 -7
  149. data/test/help.right +0 -4
  150. data/test/info.right +0 -35
  151. data/test/quit.right +0 -22
  152. data/test/test-columnize.rb +0 -46
@@ -1,5 +1,5 @@
1
1
  # ***************************************************
2
- # This tests step, next, finish and continue
2
+ # This tests info command handling
3
3
  # ***************************************************
4
4
  set debuggertesting on
5
5
  set callstyle last
@@ -9,4 +9,13 @@ info line
9
9
  info locals
10
10
  info stack
11
11
  info display
12
+ help info break
13
+ help info display
14
+ break 10
15
+ break 12
16
+ info break 10
17
+ info break 1
18
+ info break 1 2
19
+ info break
20
+ info file ./gcd.rb break
12
21
  quit
@@ -0,0 +1,65 @@
1
+ gcd.rb:4
2
+ def gcd(a, b)
3
+ # # ***************************************************
4
+ # # This tests info command handling
5
+ # # ***************************************************
6
+ # set debuggertesting on
7
+ Currently testing the debugger is on.
8
+ # set callstyle last
9
+ Frame call-display style is last.
10
+ # help info
11
+ Generic command for showing things about the program being debugged.
12
+ --
13
+ List of info subcommands:
14
+ --
15
+ info args -- Argument variables of current stack frame
16
+ info breakpoints -- Status of user-settable breakpoints
17
+ info catch -- Exceptions that can be caught in the current stack frame
18
+ info display -- Expressions to display when program stops
19
+ info file -- Info about a particular file read in
20
+ info files -- File names and timestamps of files read in
21
+ info global_variables -- Global variables
22
+ info instance_variables -- Instance variables of the current stack frame
23
+ info line -- Line number and file name of current position in source file
24
+ info locals -- Local variables of the current stack frame
25
+ info program -- Execution status of the program
26
+ info stack -- Backtrace of the stack
27
+ info thread -- List info about thread NUM
28
+ info threads -- information of currently-known threads
29
+ info variables -- Local and instance variables of the current stack frame
30
+ # info args
31
+ # info line
32
+ Line 4 of "./gcd.rb"
33
+ # info locals
34
+ # info stack
35
+ --> #0 at line gcd.rb:4
36
+ # info display
37
+ There are no auto-display expressions now.
38
+ # help info break
39
+ Status of user-settable breakpoints.
40
+ Without argument, list info about all breakpoints. With an
41
+ integer argument, list info on that breakpoint.
42
+ # help info display
43
+ Expressions to display when program stops.
44
+ # break 10
45
+ Breakpoint 1 file ./gcd.rb, line 10
46
+ # break 12
47
+ Breakpoint 2 file ./gcd.rb, line 12
48
+ # info break 10
49
+ *** No breakpoints found among list given.
50
+ # info break 1
51
+ Num Enb What
52
+ 1 y at gcd.rb:10
53
+ # info break 1 2
54
+ Num Enb What
55
+ 1 y at gcd.rb:10
56
+ 2 y at gcd.rb:12
57
+ # info break
58
+ Num Enb What
59
+ 1 y at gcd.rb:10
60
+ 2 y at gcd.rb:12
61
+ # info file ./gcd.rb break
62
+ File ./gcd.rb
63
+ breakpoint line numbers:
64
+ 4 6 6 7 10 10 12 12 13 15 18
65
+ # quit
@@ -0,0 +1,6 @@
1
+ # ********************************************************
2
+ # This tests the 'linetrace' command.
3
+ # ********************************************************
4
+ set basename on
5
+ set linetrace on
6
+ continue
@@ -0,0 +1,32 @@
1
+ gcd.rb:4
2
+ def gcd(a, b)
3
+ # # ********************************************************
4
+ # # This tests the 'linetrace' command.
5
+ # # ********************************************************
6
+ # set basename on
7
+ basename is on.
8
+ # set linetrace on
9
+ line tracing is on.
10
+ # continue
11
+ Tracing(1):gcd.rb:18 gcd(3,5)
12
+ Tracing(1):gcd.rb:6 if a > b
13
+ Tracing(1):gcd.rb:6 if a > b
14
+ Tracing(1):gcd.rb:10 return nil if a <= 0
15
+ Tracing(1):gcd.rb:10 return nil if a <= 0
16
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
17
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
18
+ Tracing(1):gcd.rb:15 return gcd(b-a, a)
19
+ Tracing(1):gcd.rb:6 if a > b
20
+ Tracing(1):gcd.rb:6 if a > b
21
+ Tracing(1):gcd.rb:10 return nil if a <= 0
22
+ Tracing(1):gcd.rb:10 return nil if a <= 0
23
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
24
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
25
+ Tracing(1):gcd.rb:15 return gcd(b-a, a)
26
+ Tracing(1):gcd.rb:6 if a > b
27
+ Tracing(1):gcd.rb:6 if a > b
28
+ Tracing(1):gcd.rb:10 return nil if a <= 0
29
+ Tracing(1):gcd.rb:10 return nil if a <= 0
30
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
31
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
32
+ Tracing(1):gcd.rb:13 return a
@@ -0,0 +1,7 @@
1
+ # ********************************************************
2
+ # This tests the 'linetrace+' command.
3
+ # ********************************************************
4
+ set basename on
5
+ set linetrace+ on
6
+ set linetrace on
7
+ continue
@@ -0,0 +1,25 @@
1
+ gcd.rb:4
2
+ def gcd(a, b)
3
+ # # ********************************************************
4
+ # # This tests the 'linetrace+' command.
5
+ # # ********************************************************
6
+ # set basename on
7
+ basename is on.
8
+ # set linetrace+ on
9
+ line tracing style is different consecutive lines.
10
+ # set linetrace on
11
+ line tracing is on.
12
+ # continue
13
+ Tracing(1):gcd.rb:18 gcd(3,5)
14
+ Tracing(1):gcd.rb:6 if a > b
15
+ Tracing(1):gcd.rb:10 return nil if a <= 0
16
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
17
+ Tracing(1):gcd.rb:15 return gcd(b-a, a)
18
+ Tracing(1):gcd.rb:6 if a > b
19
+ Tracing(1):gcd.rb:10 return nil if a <= 0
20
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
21
+ Tracing(1):gcd.rb:15 return gcd(b-a, a)
22
+ Tracing(1):gcd.rb:6 if a > b
23
+ Tracing(1):gcd.rb:10 return nil if a <= 0
24
+ Tracing(1):gcd.rb:12 if a == 1 or b-a == 0
25
+ Tracing(1):gcd.rb:13 return a
@@ -0,0 +1,19 @@
1
+ # ********************************************************
2
+ # This tests the 'list' command.
3
+ # ********************************************************
4
+ set basename on
5
+ list
6
+ list
7
+ list
8
+ list
9
+ list -
10
+ list -
11
+ list -
12
+ list -
13
+ list 1
14
+ list 20
15
+ set listsize 5
16
+ list 5
17
+ list =
18
+ list 3-4
19
+
@@ -0,0 +1,127 @@
1
+ gcd.rb:4
2
+ def gcd(a, b)
3
+ # # ********************************************************
4
+ # # This tests the 'list' command.
5
+ # # ********************************************************
6
+ # set basename on
7
+ basename is on.
8
+ # list
9
+ [-1, 8] in ./gcd.rb
10
+ 1 #!/usr/bin/env ruby
11
+ 2
12
+ 3 # GCD. We assume positive numbers
13
+ => 4 def gcd(a, b)
14
+ 5 # Make: a <= b
15
+ 6 if a > b
16
+ 7 a, b = [b, a]
17
+ 8 end
18
+ # list
19
+ [9, 18] in ./gcd.rb
20
+ 9
21
+ 10 return nil if a <= 0
22
+ 11
23
+ 12 if a == 1 or b-a == 0
24
+ 13 return a
25
+ 14 end
26
+ 15 return gcd(b-a, a)
27
+ 16 end
28
+ 17
29
+ 18 gcd(3,5)
30
+ # list
31
+ [9, 18] in ./gcd.rb
32
+ 9
33
+ 10 return nil if a <= 0
34
+ 11
35
+ 12 if a == 1 or b-a == 0
36
+ 13 return a
37
+ 14 end
38
+ 15 return gcd(b-a, a)
39
+ 16 end
40
+ 17
41
+ 18 gcd(3,5)
42
+ # list
43
+ [9, 18] in ./gcd.rb
44
+ 9
45
+ 10 return nil if a <= 0
46
+ 11
47
+ 12 if a == 1 or b-a == 0
48
+ 13 return a
49
+ 14 end
50
+ 15 return gcd(b-a, a)
51
+ 16 end
52
+ 17
53
+ 18 gcd(3,5)
54
+ # list -
55
+ [-1, 8] in ./gcd.rb
56
+ 1 #!/usr/bin/env ruby
57
+ 2
58
+ 3 # GCD. We assume positive numbers
59
+ => 4 def gcd(a, b)
60
+ 5 # Make: a <= b
61
+ 6 if a > b
62
+ 7 a, b = [b, a]
63
+ 8 end
64
+ # list -
65
+ [-1, 8] in ./gcd.rb
66
+ 1 #!/usr/bin/env ruby
67
+ 2
68
+ 3 # GCD. We assume positive numbers
69
+ => 4 def gcd(a, b)
70
+ 5 # Make: a <= b
71
+ 6 if a > b
72
+ 7 a, b = [b, a]
73
+ 8 end
74
+ # list -
75
+ [-1, 8] in ./gcd.rb
76
+ 1 #!/usr/bin/env ruby
77
+ 2
78
+ 3 # GCD. We assume positive numbers
79
+ => 4 def gcd(a, b)
80
+ 5 # Make: a <= b
81
+ 6 if a > b
82
+ 7 a, b = [b, a]
83
+ 8 end
84
+ # list -
85
+ [-1, 8] in ./gcd.rb
86
+ 1 #!/usr/bin/env ruby
87
+ 2
88
+ 3 # GCD. We assume positive numbers
89
+ => 4 def gcd(a, b)
90
+ 5 # Make: a <= b
91
+ 6 if a > b
92
+ 7 a, b = [b, a]
93
+ 8 end
94
+ # list 1
95
+ [-4, 5] in ./gcd.rb
96
+ 1 #!/usr/bin/env ruby
97
+ 2
98
+ 3 # GCD. We assume positive numbers
99
+ => 4 def gcd(a, b)
100
+ 5 # Make: a <= b
101
+ # list 20
102
+ [15, 24] in ./gcd.rb
103
+ 15 return gcd(b-a, a)
104
+ 16 end
105
+ 17
106
+ 18 gcd(3,5)
107
+ # set listsize 5
108
+ Number of source lines to list by default is 5.
109
+ # list 5
110
+ [3, 7] in ./gcd.rb
111
+ 3 # GCD. We assume positive numbers
112
+ => 4 def gcd(a, b)
113
+ 5 # Make: a <= b
114
+ 6 if a > b
115
+ 7 a, b = [b, a]
116
+ # list =
117
+ [2, 6] in ./gcd.rb
118
+ 2
119
+ 3 # GCD. We assume positive numbers
120
+ => 4 def gcd(a, b)
121
+ 5 # Make: a <= b
122
+ 6 if a > b
123
+ # list 3-4
124
+ [3, 4] in ./gcd.rb
125
+ 3 # GCD. We assume positive numbers
126
+ => 4 def gcd(a, b)
127
+ #
@@ -0,0 +1 @@
1
+ The program has finished and will be restarted.
@@ -0,0 +1,6 @@
1
+ # ********************************************************
2
+ # This tests the "starting" annotation
3
+ # ********************************************************
4
+ step
5
+ step
6
+ quit
@@ -0,0 +1,41 @@
1
+ starting
2
+ stopped
3
+ breakpoints
4
+ No breakpoints.
5
+ 
6
+ stack
7
+ --> #0 at line output.rb:1
8
+ 
9
+ variables
10
+ self = main
11
+ 
12
+ source output.rb:1
13
+ puts "one"
14
+ # # ********************************************************
15
+ # # This tests the "starting" annotation
16
+ # # ********************************************************
17
+ # step
18
+ starting
19
+ one
20
+ stopped
21
+ stack
22
+ --> #0 at line output.rb:2
23
+ 
24
+ variables
25
+ self = main
26
+ 
27
+ source output.rb:2
28
+ puts "two"
29
+ # step
30
+ starting
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
@@ -0,0 +1,8 @@
1
+ # ******************************************************
2
+ # This tests running "next" over code that post-mortems
3
+ # ******************************************************
4
+ set debuggertesting on
5
+ next 2
6
+ next
7
+ quit
8
+
@@ -0,0 +1,14 @@
1
+ pm.rb:3
2
+ def zero_div
3
+ # # ******************************************************
4
+ # # This tests running "next" over code that post-mortems
5
+ # # ******************************************************
6
+ # set debuggertesting on
7
+ Currently testing the debugger is on.
8
+ # next 2
9
+ pm.rb:8
10
+ zero_div
11
+ # next
12
+ pm.rb:5
13
+ 1/0
14
+ # quit
@@ -0,0 +1,31 @@
1
+ pm.rb:3
2
+ def zero_div
3
+ # # ***************************************************
4
+ # # This tests post-mortem handling.
5
+ # # ***************************************************
6
+ # set debuggertesting on
7
+ Currently testing the debugger is on.
8
+ # continue
9
+ pm.rb:5
10
+ 1/0
11
+ # # Should have got a divide by 0 error
12
+ # info program
13
+ The program crashed.
14
+ Exception: #<ZeroDivisionError: divided by 0>
15
+ # where
16
+ --> #0 / at line pm.rb:5
17
+ #1 at line pm.rb:8
18
+ # up
19
+ #1 at line pm.rb:8
20
+ # p x
21
+ 2
22
+ # help
23
+ Type 'help <command-name>' for help on a specific command
24
+
25
+ Available commands:
26
+ backtrace delete edit frame list ps restart source undisplay
27
+ break disable enable help method putl save thread up
28
+ catch display eval info p quit set tmate var
29
+ condition down exit irb pp reload show trace where
30
+
31
+ # quit
@@ -0,0 +1,13 @@
1
+ # ***************************************************
2
+ # This tests post-mortem handling.
3
+ # ***************************************************
4
+ set debuggertesting on
5
+ continue
6
+ # Should have got a divide by 0 error
7
+ info program
8
+ where
9
+ up
10
+ p x
11
+ help
12
+ quit
13
+
@@ -0,0 +1,31 @@
1
+ pm.rb:3
2
+ def zero_div
3
+ # # ***************************************************
4
+ # # This tests post-mortem handling.
5
+ # # ***************************************************
6
+ # set debuggertesting on
7
+ Currently testing the debugger is on.
8
+ # continue
9
+ pm.rb:5
10
+ 1/0
11
+ # # Should have got a divide by 0 error
12
+ # info program
13
+ The program crashed.
14
+ Exception: #<ZeroDivisionError: divided by 0>
15
+ # where
16
+ --> #0 / at line pm.rb:5
17
+ #1 at line pm.rb:8
18
+ # up
19
+ #1 at line pm.rb:8
20
+ # p x
21
+ 2
22
+ # help
23
+ Type 'help <command-name>' for help on a specific command
24
+
25
+ Available commands:
26
+ backtrace delete edit frame list ps restart source up
27
+ break disable enable help method putl save thread var
28
+ catch display eval info p quit set trace where
29
+ condition down exit irb pp reload show undisplay
30
+
31
+ # quit