rb8-trepanning 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/CHANGES +10 -0
  2. data/ChangeLog +276 -0
  3. data/Makefile +13 -0
  4. data/Rakefile +1 -2
  5. data/app/display.rb +41 -1
  6. data/app/irb.rb +55 -49
  7. data/app/options.rb +3 -2
  8. data/app/run.rb +25 -7
  9. data/app/util.rb +19 -1
  10. data/bin/trepan8 +0 -2
  11. data/data/perldb.bindings +17 -0
  12. data/interface/script.rb +1 -1
  13. data/interface/server.rb +1 -1
  14. data/interface/user.rb +3 -1
  15. data/{interface/base_intf.rb → interface.rb} +1 -1
  16. data/io/input.rb +1 -1
  17. data/io/null_output.rb +1 -1
  18. data/io/string_array.rb +2 -2
  19. data/io/tcpclient.rb +1 -1
  20. data/io/tcpserver.rb +1 -1
  21. data/{io/base_io.rb → io.rb} +0 -0
  22. data/lib/debugger.rb +0 -1
  23. data/lib/trepanning.rb +3 -1
  24. data/processor/command/alias.rb +13 -2
  25. data/processor/command/backtrace.rb +2 -1
  26. data/processor/command/base/subcmd.rb +1 -5
  27. data/processor/command/base/submgr.rb +1 -1
  28. data/processor/command/base/subsubcmd.rb +1 -1
  29. data/processor/command/base/subsubmgr.rb +4 -4
  30. data/processor/command/break.rb +19 -11
  31. data/processor/command/catch.rb +1 -1
  32. data/processor/command/complete.rb +1 -1
  33. data/processor/command/continue.rb +7 -1
  34. data/processor/command/directory.rb +2 -2
  35. data/processor/command/disable.rb +13 -14
  36. data/processor/command/display.rb +3 -1
  37. data/processor/command/down.rb +8 -8
  38. data/processor/command/edit.rb +1 -1
  39. data/processor/command/enable.rb +21 -22
  40. data/processor/command/eval.rb +1 -2
  41. data/processor/command/exit.rb +25 -8
  42. data/processor/command/finish.rb +7 -2
  43. data/processor/command/frame.rb +1 -1
  44. data/processor/command/help.rb +3 -4
  45. data/processor/command/info.rb +2 -0
  46. data/processor/command/info_subcmd/files.rb +2 -2
  47. data/processor/command/info_subcmd/locals.rb +6 -53
  48. data/processor/command/info_subcmd/source.rb +10 -4
  49. data/processor/command/info_subcmd/variables.rb +35 -0
  50. data/processor/command/info_subcmd/variables_subcmd/.gitignore +1 -0
  51. data/processor/command/info_subcmd/variables_subcmd/class.rb +42 -0
  52. data/processor/command/info_subcmd/variables_subcmd/constant.rb +42 -0
  53. data/processor/command/info_subcmd/{globals.rb → variables_subcmd/globals.rb} +22 -17
  54. data/processor/command/info_subcmd/variables_subcmd/instance.rb +42 -0
  55. data/processor/command/info_subcmd/variables_subcmd/locals.rb +80 -0
  56. data/processor/command/kill.rb +8 -7
  57. data/processor/command/list.rb +2 -2
  58. data/processor/command/macro.rb +27 -9
  59. data/processor/command/next.rb +1 -1
  60. data/processor/command/parsetree.rb +1 -1
  61. data/processor/command/pp.rb +1 -1
  62. data/processor/command/pr.rb +1 -1
  63. data/processor/command/ps.rb +1 -1
  64. data/processor/command/restart.rb +1 -1
  65. data/processor/command/save.rb +1 -1
  66. data/processor/command/set_subcmd/auto.rb +7 -1
  67. data/processor/command/set_subcmd/different.rb +1 -1
  68. data/processor/command/set_subcmd/trace.rb +5 -4
  69. data/processor/command/set_subcmd/trace_subcmd/print.rb +4 -3
  70. data/processor/command/shell.rb +5 -4
  71. data/processor/command/show_subcmd/{alias.rb → aliases.rb} +2 -2
  72. data/processor/command/source.rb +1 -1
  73. data/processor/command/step.rb +2 -5
  74. data/processor/command/tbreak.rb +1 -1
  75. data/processor/command/unalias.rb +13 -8
  76. data/processor/command/undisplay.rb +13 -9
  77. data/processor/command/up.rb +12 -14
  78. data/processor/command.rb +138 -230
  79. data/processor/display.rb +46 -10
  80. data/processor/help.rb +5 -3
  81. data/processor/hook.rb +2 -2
  82. data/processor/location.rb +25 -0
  83. data/processor/mock.rb +3 -2
  84. data/processor/msg.rb +55 -42
  85. data/processor/old-command.rb +270 -0
  86. data/processor/{processor.rb → old-processor.rb} +7 -8
  87. data/processor/running.rb +7 -12
  88. data/processor/subcmd.rb +15 -41
  89. data/processor/validate.rb +240 -238
  90. data/{processor/main.rb → processor.rb} +20 -42
  91. data/test/data/trace.cmd +6 -0
  92. data/test/data/trace.right +46 -0
  93. data/test/integration/helper.rb +2 -0
  94. data/test/integration/test-trace.rb +29 -0
  95. data/test/unit/cmd-helper.rb +2 -3
  96. data/test/unit/test-app-options.rb +13 -11
  97. data/test/unit/test-app-run.rb +7 -1
  98. data/test/unit/test-base-cmd.rb +1 -1
  99. data/test/unit/test-cmd-kill.rb +11 -4
  100. data/test/unit/test-io-tcpserver.rb +9 -4
  101. data/test/unit/test-proc-eval.rb +1 -2
  102. data/test/unit/test-proc-location.rb +26 -32
  103. data/test/unit/test-subcmd-help.rb +1 -1
  104. data/trepan8.gemspec +9 -1
  105. metadata +60 -17
  106. data/processor/command/base/cmd.rb +0 -177
data/CHANGES CHANGED
@@ -1,3 +1,13 @@
1
+ Oct 27, 2011 (0.1.4)
2
+
3
+ - POSIX shell -x (long form: --trace) fixed
4
+ - Go with rdoc 2.4.2 now
5
+ - Improve documentation for "macro"
6
+ - show alias => show aliases
7
+ - correct info variables
8
+ - Add ruby-debug-base dependency
9
+ - Bugs fixed, code reorganized.
10
+
1
11
  June 12, 2011 (0.1.3) Fleetwood release
2
12
 
3
13
  First attempt at backport from trepanning.
data/ChangeLog CHANGED
@@ -1,3 +1,279 @@
1
+ 2011-10-15 rocky <rockyb@rubyforge.org>
2
+
3
+ * app/display.rb, processor/command/undisplay.rb: Sync with
4
+ rb-trepanning.
5
+
6
+ 2011-10-14 rocky <rockyb@rubyforge.org>
7
+
8
+ I hate conflicted merges
9
+
10
+ 2011-10-14 rocky <rockyb@rubyforge.org>
11
+
12
+ * app/display.rb, processor/command/disable.rb,
13
+ processor/command/display.rb, processor/command/enable.rb,
14
+ processor/command/set_subcmd/auto.rb, processor/display.rb: Sync
15
+ with rb-trepanning and rbx-trepanning although enable/disable
16
+ display numbers not supported yet.
17
+
18
+ 2011-10-09 rocky <rockyb@rubyforge.org>
19
+
20
+ * processor/command/set_subcmd/auto.rb,
21
+ processor/command/set_subcmd/trace.rb,
22
+ processor/command/set_subcmd/trace_subcmd/print.rb: Regularize and
23
+ improve "set" help a little bit. Sync with rb-trepanning
24
+
25
+ 2011-10-09 rocky <rockyb@rubyforge.org>
26
+
27
+ Merge branch 'master' of github.com:rocky/rb8-trepanning
28
+
29
+ 2011-10-09 rocky <rockyb@rubyforge.org>
30
+
31
+ * app/options.rb, app/run.rb, bin/trepan8, lib/trepanning.rb,
32
+ processor.rb, processor/old-processor.rb, test/data/trace.cmd,
33
+ test/data/trace.right, test/integration/helper.rb,
34
+ test/integration/test-trace.rb: trepan8 --trace option (-x) works
35
+ again.
36
+
37
+ 2011-09-27 rocky <rockyb@rubyforge.org>
38
+
39
+ * Rakefile, trepan8.gemspec: Go with rdoc > 2.4.2 now. Sigh
40
+
41
+ 2011-09-27 rocky <rockyb@rubyforge.org>
42
+
43
+ * processor/command/macro.rb, test/unit/test-proc-location.rb:
44
+ Improve documentation for "macro". Remove a stray "require
45
+ 'ruby-debug'".
46
+
47
+ 2011-09-25 rocky <rockyb@rubyforge.org>
48
+
49
+ * processor/command/show_subcmd/alias.rb,
50
+ processor/command/show_subcmd/aliases.rb: show alias => show aliases
51
+
52
+
53
+ 2011-09-25 rocky <rockyb@rubyforge.org>
54
+
55
+ * processor/command/finish.rb, processor/command/unalias.rb: Sync
56
+ with rbx-trepanning.
57
+
58
+ 2011-09-25 rocky <rockyb@rubyforge.org>
59
+
60
+ * app/run.rb, processor/command/kill.rb,
61
+ processor/command/set_subcmd/different.rb,
62
+ processor/command/unalias.rb, test/unit/test-cmd-kill.rb: Misc
63
+ changes to sync with rb{,x}-trepanning
64
+
65
+ 2011-08-28 rocky <rockyb@rubyforge.org>
66
+
67
+ * processor/command.rb, processor/command/alias.rb,
68
+ processor/command/backtrace.rb, processor/command/base/cmd.rb,
69
+ processor/command/base/subcmd.rb, processor/command/base/submgr.rb,
70
+ processor/command/base/subsubcmd.rb, processor/command/break.rb,
71
+ processor/command/catch.rb, processor/command/complete.rb,
72
+ processor/command/continue.rb, processor/command/directory.rb,
73
+ processor/command/disable.rb, processor/command/display.rb,
74
+ processor/command/edit.rb, processor/command/eval.rb,
75
+ processor/command/exit.rb, processor/command/finish.rb,
76
+ processor/command/frame.rb, processor/command/help.rb,
77
+ processor/command/kill.rb, processor/command/list.rb,
78
+ processor/command/macro.rb, processor/command/next.rb,
79
+ processor/command/parsetree.rb, processor/command/pp.rb,
80
+ processor/command/pr.rb, processor/command/ps.rb,
81
+ processor/command/restart.rb, processor/command/save.rb,
82
+ processor/command/shell.rb, processor/command/source.rb,
83
+ processor/command/step.rb, processor/command/tbreak.rb,
84
+ processor/command/unalias.rb, processor/command/undisplay.rb,
85
+ processor/command/up.rb, processor/old-command.rb,
86
+ processor/old-processor.rb, processor/subcmd.rb,
87
+ test/unit/test-base-cmd.rb: processor/command.rb ->
88
+ processor/old-command.rb processor/base/cmd.rb ->
89
+ processor/command.rb
90
+
91
+ 2011-08-28 rocky <rockyb@rubyforge.org>
92
+
93
+ Merge branch 'master' of github.com:rocky/rb8-trepanning
94
+
95
+ 2011-08-28 rocky <rockyb@rubyforge.org>
96
+
97
+ * interface.rb, interface/base_intf.rb, interface/script.rb,
98
+ interface/server.rb, interface/user.rb, io.rb, io/base_io.rb,
99
+ io/input.rb, io/null_output.rb, io/string_array.rb,
100
+ io/tcpclient.rb, io/tcpserver.rb, lib/trepanning.rb, processor.rb,
101
+ processor/command/base/subcmd.rb, processor/command/exit.rb,
102
+ processor/command/help.rb, processor/help.rb,
103
+ processor/location.rb, processor/main.rb, processor/mock.rb,
104
+ processor/msg.rb, processor/old-processor.rb,
105
+ processor/processor.rb, processor/subcmd.rb, processor/validate.rb,
106
+ test/unit/test-proc-eval.rb, test/unit/test-subcmd-help.rb: Partial
107
+ sync with rbx-trepanning: interface/base_intf.rb -> interface.rb
108
+ base_io -> io.rb processor/main.rb -> processor.b
109
+
110
+ 2011-08-28 rocky <rockyb@rubyforge.org>
111
+
112
+ * lib/trepanning.rb, processor.rb,
113
+ processor/command/base/subcmd.rb, processor/command/exit.rb,
114
+ processor/command/help.rb, processor/help.rb,
115
+ processor/location.rb, processor/main.rb, processor/mock.rb,
116
+ processor/msg.rb, processor/old-processor.rb,
117
+ processor/processor.rb, processor/subcmd.rb, processor/validate.rb,
118
+ test/unit/test-proc-eval.rb, test/unit/test-subcmd-help.rb: Partial
119
+ sync with rbx-trepanning.
120
+
121
+ 2011-08-14 rocky <rockyb@rubyforge.org>
122
+
123
+ * processor/command/kill.rb: See above
124
+
125
+ 2011-08-14 rocky <rockyb@rubyforge.org>
126
+
127
+ * processor/command/kill.rb, test/unit/test-app-options.rb:
128
+ test-app-options.rb: testing help/version options was killing the
129
+ rest of the tests Speaking of killing.. add more robust kill
130
+ checking and fix an outright bug in name-to-number access.
131
+
132
+ 2011-06-21 rocky <rockyb@rubyforge.org>
133
+
134
+ * app/run.rb: backticks work differently between 1.9.2 and 1.8.7?
135
+ Can't do an inspect on a string and have the shell drop the quotes.
136
+
137
+
138
+ 2011-06-21 rocky <rockyb@rubyforge.org>
139
+
140
+ * app/run.rb, app/util.rb, processor/command/info_subcmd/files.rb:
141
+ Sync with rb-trepanning
142
+
143
+ 2011-06-21 rocky <rockyb@rubyforge.org>
144
+
145
+ * processor/command/continue.rb: One more place we should be
146
+ checking for a valid Ruby program.
147
+
148
+ 2011-06-21 rocky <rockyb@rubyforge.org>
149
+
150
+ * processor/command/base/cmd.rb, processor/command/break.rb,
151
+ processor/command/disable.rb, processor/command/eval.rb,
152
+ processor/command/up.rb: Test for syntactically-correct Ruby program
153
+ on the break command. DRY including util which is needed for
154
+ silencing already-defined constant messages.
155
+
156
+ 2011-06-21 rocky <rockyb@rubyforge.org>
157
+
158
+ * app/display.rb, app/run.rb, lib/debugger.rb,
159
+ processor/command/info_subcmd/source.rb,
160
+ processor/command/info_subcmd/variables_subcmd/constant.rb,
161
+ test/unit/test-app-run.rb: "info source" should not try to look for
162
+ breakpoint line numbers if the source is syntactically invalid as is
163
+ the case for erb files. Other small changes.
164
+
165
+ 2011-06-19 rocky <rockyb@rubyforge.org>
166
+
167
+ * processor/command/info_subcmd/variables.rb,
168
+ processor/command/info_subcmd/variables_subcmd/class.rb,
169
+ processor/command/info_subcmd/variables_subcmd/constant.rb,
170
+ processor/help.rb, processor/msg.rb, processor/subcmd.rb: Add "info
171
+ var constant". Correct abbreviation lookup. Sync with
172
+ rbx-trepanning.
173
+
174
+ 2011-06-19 rocky <rockyb@rubyforge.org>
175
+
176
+ * app/irb.rb, processor/command/enable.rb: Silence another
177
+ constant-init wraning. Sync with rbx-trepanning.
178
+
179
+ 2011-06-18 rocky <rockyb@rubyforge.org>
180
+
181
+ * app/irb.rb, processor/command/shell.rb: Fix bug in running 'dbgr'
182
+ inside irb.
183
+
184
+ 2011-06-18 rocky <rockyb@rubyforge.org>
185
+
186
+ * app/irb.rb,
187
+ processor/command/info_subcmd/variables_subcmd/class.rb,
188
+ processor/command/info_subcmd/variables_subcmd/globals.rb,
189
+ processor/command/info_subcmd/variables_subcmd/instance.rb,
190
+ processor/command/info_subcmd/variables_subcmd/locals.rb,
191
+ processor/command/shell.rb, processor/msg.rb: Colorize "info
192
+ variable" display and show class name in header.
193
+
194
+ 2011-06-18 rocky <rockyb@rubyforge.org>
195
+
196
+ * processor/command/help.rb,
197
+ processor/command/info_subcmd/variables.rb,
198
+ processor/command/info_subcmd/variables_subcmd/globals.rb,
199
+ processor/mock.rb: Small changes.
200
+
201
+ 2011-06-18 rocky <rockyb@rubyforge.org>
202
+
203
+ * processor/command/info_subcmd/variables.rb,
204
+ processor/command/info_subcmd/variables_subcmd/locals.rb,
205
+ trepan8.gemspec: Correct info variables.
206
+
207
+ 2011-06-18 rocky <rockyb@rubyforge.org>
208
+
209
+ * processor/command/base/subsubmgr.rb,
210
+ processor/command/info_subcmd/globals.rb,
211
+ processor/command/info_subcmd/iv.rb,
212
+ processor/command/info_subcmd/locals.rb,
213
+ processor/command/info_subcmd/variables_subcmd/.gitignore,
214
+ processor/command/info_subcmd/variables_subcmd/class.rb,
215
+ processor/command/info_subcmd/variables_subcmd/globals.rb,
216
+ processor/command/info_subcmd/variables_subcmd/instance.rb,
217
+ processor/command/info_subcmd/variables_subcmd/locals.rb: Add "info
218
+ variables". Sync with rb-trepanning.
219
+
220
+ 2011-06-18 rocky <rockyb@rubyforge.org>
221
+
222
+ * trepan8.gemspec: Add ruby-debug-base dependency. Issue #1.
223
+
224
+ 2011-06-18 rocky <rockyb@rubyforge.org>
225
+
226
+ * app/util.rb, processor/command/disable.rb,
227
+ processor/command/down.rb, processor/command/enable.rb,
228
+ processor/command/info.rb,
229
+ processor/command/info_subcmd/globals.rb,
230
+ processor/command/info_subcmd/iv.rb,
231
+ processor/command/info_subcmd/locals.rb, processor/command/up.rb:
232
+ Add 'info iv' for instance variables. Use better way to suppress
233
+ warnings.
234
+
235
+ 2011-06-18 rocky <rockyb@rubyforge.org>
236
+
237
+ * data/perldb.bindings, processor/command/alias.rb,
238
+ processor/command/list.rb, processor/main.rb,
239
+ test/unit/test-io-tcpserver.rb: alias.rb: cat is an alias for
240
+ "list". perldb.bindings first attempt at perldb bindings.
241
+ test-io-tcpserver.rb: skip test if we can't open socket.
242
+
243
+ 2011-06-16 rocky <rockyb@rubyforge.org>
244
+
245
+ * app/irb.rb, app/options.rb, processor/command/shell.rb: Suppress
246
+ rb-readline dup constant warnings.
247
+
248
+ 2011-06-16 rocky <rockyb@rubyforge.org>
249
+
250
+ * app/irb.rb, processor/command/shell.rb, test/unit/cmd-helper.rb,
251
+ test/unit/test-proc-location.rb: Get unit test test-proc-location
252
+ working. There is weirdness here where things are getting required
253
+ multiple times.
254
+
255
+ 2011-06-15 rocky <rockyb@rubyforge.org>
256
+
257
+ * app/irb.rb, processor/command/step.rb, processor/hook.rb,
258
+ processor/running.rb: Had broken "autoirb" when I renamed "irb" to
259
+ "shell". Make a little more like other trepanning debuggers.
260
+
261
+ 2011-06-12 rocky <rockyb@rubyforge.org>
262
+
263
+ * processor/command/set_subcmd/trace.rb,
264
+ processor/command/set_subcmd/trace_subcmd/buffer.rb,
265
+ processor/command/set_subcmd/trace_subcmd/print.rb,
266
+ processor/command/show_subcmd/trace.rb,
267
+ processor/command/show_subcmd/trace_subcmd/buffer.rb,
268
+ processor/command/show_subcmd/trace_subcmd/print.rb,
269
+ trepan8.gemspec: Wrong package name and forgot to add set/show trace
270
+ files.
271
+
272
+ 2011-06-11 rocky <rockyb@rubyforge.org>
273
+
274
+ * ChangeLog, Rakefile, app/options.rb: Get ready for 0.1.3 release.
275
+
276
+
1
277
  2011-06-11 rocky <rockyb@rubyforge.org>
2
278
 
3
279
  * Rakefile: I run rubinius on this too often.
data/Makefile ADDED
@@ -0,0 +1,13 @@
1
+ # I'll admit it -- I'm an absent-minded old-timer who has trouble
2
+ # learning new tricks.
3
+ .PHONY: all test
4
+
5
+ all: test
6
+
7
+ check:
8
+ rake test
9
+ test:
10
+ rake test
11
+
12
+ %:
13
+ rake $@
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ def gemspec
10
10
  @gemspec ||= eval(File.read(Gemspec_filename), binding, Gemspec_filename)
11
11
  end
12
12
 
13
- require 'rake/gempackagetask'
13
+ require 'rdoc/task'
14
14
  desc 'Build the gem'
15
15
  task :package=>:gem
16
16
  task :gem=>:gemspec do
@@ -177,7 +177,6 @@ task :gemspec do
177
177
  end
178
178
 
179
179
  # --------- RDoc Documentation ------
180
- require 'rake/rdoctask'
181
180
  desc 'Generate rdoc documentation'
182
181
  Rake::RDocTask.new('rdoc') do |rdoc|
183
182
  rdoc.rdoc_dir = 'doc'
data/app/display.rb CHANGED
@@ -19,6 +19,13 @@ class DisplayMgr
19
19
  @list = []
20
20
  end
21
21
 
22
+ def [](index)
23
+ raise TypeError,
24
+ "index #{index} should be a Fixnum, is #{index.class}" unless
25
+ index.is_a?(Fixnum)
26
+ @list.detect {|disp| disp.number == index }
27
+ end
28
+
22
29
  def add(frame, arg, fmt=nil)
23
30
  return nil unless frame
24
31
  begin
@@ -83,6 +90,18 @@ Num Enb Expression"
83
90
  end
84
91
  false
85
92
  end
93
+
94
+ def max
95
+ @list.map{|disp| disp.number}.max
96
+ end
97
+
98
+ def nums
99
+ @list.map{|disp| disp.number}
100
+ end
101
+
102
+ def size
103
+ @list.size
104
+ end
86
105
  end
87
106
 
88
107
  class Display
@@ -98,6 +117,22 @@ class Display
98
117
  @number = number
99
118
  end
100
119
 
120
+ def disable
121
+ @enabled = false
122
+ end
123
+
124
+ def disabled?
125
+ !@enabled
126
+ end
127
+
128
+ def enable
129
+ @enabled = true
130
+ end
131
+
132
+ def enabled?
133
+ @enabled
134
+ end
135
+
101
136
  def to_s(frame)
102
137
  return 'No symbol "' + @arg + '" in current context.' unless frame
103
138
 
@@ -119,10 +154,13 @@ class Display
119
154
  what += @arg if @arg
120
155
  '%3d: %s' % [@number, what]
121
156
  end
157
+
122
158
  end
123
159
 
124
160
  if __FILE__ == $0
125
161
  # Demo it.
162
+ require 'rubygems'
163
+ require 'ruby-debug-base'; Debugger.start
126
164
  mgr = DisplayMgr.new
127
165
 
128
166
  def print_display(mgr)
@@ -130,10 +168,12 @@ if __FILE__ == $0
130
168
  puts '=' * 40
131
169
  end
132
170
 
133
- frame = Rubinius::VM.backtrace(0)[0]
171
+ frame = Debugger.current_context
134
172
 
135
173
  x = 1
136
174
  mgr.add(frame, 'x > 1')
175
+ puts "Number of displays %s" % mgr.size
176
+ puts "Max Number %d" % mgr.max
137
177
  print_display(mgr)
138
178
 
139
179
  mgr.enable_disable(1, false)
data/app/irb.rb CHANGED
@@ -1,74 +1,80 @@
1
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
1
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
2
2
  # This code comes more or less from ruby-debug.
3
- require 'irb'
3
+ require 'rubygems'; require 'require_relative'
4
+ require_relative 'util'
5
+
6
+ Trepan::Util.suppress_warnings {
7
+ require 'irb'
8
+ }
9
+
4
10
  module IRB # :nodoc:
5
11
  module ExtendCommand # :nodoc:
6
12
  # FIXME: should we read these out of a directory to
7
13
  # make this more user-customizable?
8
14
 
9
- # A base command class that resume execution
10
- class DebuggerResumeCommand
11
- def self.execute(conf, *opts)
12
- name =
13
- if self.name =~ /IRB::ExtendCommand::(\S+)/
14
- $1.downcase
15
- else
16
- 'unknown'
17
- end
18
- $trepan_args = opts
19
- $trepan_command =
20
- if $trepan_irb_statements
21
- $trepan_irb_statements
22
- else
23
- ([name] + opts).join(' ')
24
- end
15
+ unless defined? TContinue
25
16
 
26
- throw :IRB_EXIT, name.to_sym
17
+ # A base command class that resume execution
18
+ class TrepanResumeCommand
19
+ def self.execute(conf, *opts)
20
+ name =
21
+ if self.name =~ /IRB::ExtendCommand::(\S+)/
22
+ $1[1..-1].downcase
23
+ else
24
+ 'unknown'
25
+ end
26
+ $trepan_args = opts
27
+ $trepan_command =
28
+ if $trepan_irb_statements
29
+ $trepan_irb_statements
30
+ else
31
+ ([name] + opts).join(' ')
32
+ end
33
+
34
+ throw :IRB_EXIT, name.to_sym
35
+ end
27
36
  end
28
- end
29
-
30
- # FIXME: figure out why superclass type mismatch problem on 1.9
31
- if RUBY_VERSION !~ /^1.9/
32
- class Continue < DebuggerResumeCommand ; end
33
- class Finish < DebuggerResumeCommand ; end
34
- class Next < DebuggerResumeCommand ; end
35
- class Quit < DebuggerResumeCommand ; end
36
- class Step < DebuggerResumeCommand ; end
37
- end
38
-
39
- # Issues a comamnd to the debugger without continuing
40
- # execution.
41
- class Dbgr
42
- def self.execute(conf, *opts)
43
- $trepan_command =
44
- if opts.size == 1 && opts[0].is_a?(String)
45
- $trepan_args = opts[0]
46
- else
47
- opts.join(' ')
48
- end
49
- dbg_cmdproc = conf.workspace.instance_variable_get('@dbg_cmdproc')
50
- dbg_cmdproc.run_command($trepan_command)
37
+
38
+ class TContinue < TrepanResumeCommand ; end
39
+ class TFinish < TrepanResumeCommand ; end
40
+ class TNext < TrepanResumeCommand ; end
41
+ class TQuit < TrepanResumeCommand ; end
42
+ class TStep < TrepanResumeCommand ; end
43
+
44
+ # Issues a comamnd to the debugger without continuing
45
+ # execution.
46
+ class TDbgr
47
+ def self.execute(conf, *opts)
48
+ $trepan_command =
49
+ if opts.size == 1 && opts[0].is_a?(String)
50
+ $trepan_args = opts[0]
51
+ else
52
+ opts.join(' ')
53
+ end
54
+ # dbg_cmdproc = conf.workspace.instance_variable_get('@dbg_cmdproc')
55
+ # dbg_cmdproc.run_command($trepan_command)
56
+ $trepan_cmdproc.run_command($trepan_command)
57
+ end
51
58
  end
52
59
  end
53
-
54
60
  end
55
61
  if defined?(ExtendCommandBundle)
56
62
  # New irb Commands which are the same name as their debugger
57
63
  # counterpart
58
- %w(Dbgr Finish Step).each do |name|
59
- command = name.downcase
64
+ %w(TDbgr TFinish TStep).each do |name|
65
+ command = name[1..-1].downcase
60
66
  sym = name.to_sym
61
67
  ExtendCommandBundle.def_extend_command command, sym
62
68
  end
63
69
  # New irb Commands which are the slightly different from their
64
70
  # debugger counterpart
65
- [['cont', :Continue],
66
- ['ne', :Next],
67
- ['q', :Quit]].each do |command, sym|
71
+ [['cont', :TContinue],
72
+ ['ne', :TNext],
73
+ ['q', :TQuit]].each do |command, sym|
68
74
  ExtendCommandBundle.def_extend_command command, sym
69
75
  end
70
76
  end
71
-
77
+
72
78
  def self.start_session(binding, dbg_cmdproc, conf={})
73
79
  unless @__initialized
74
80
 
data/app/options.rb CHANGED
@@ -9,7 +9,7 @@ module Trepan
9
9
  require 'rubygems'; require 'require_relative'
10
10
  require_relative 'default'
11
11
 
12
- VERSION = '0.1.3' unless defined? Trepan::VERSION
12
+ VERSION = '0.1.4' unless defined? Trepan::VERSION
13
13
  PROGRAM = 'trepan8' unless defined? Trepan::PROGRAM
14
14
 
15
15
  module_function
@@ -163,7 +163,8 @@ EOB
163
163
  options[:wait] = true
164
164
  end
165
165
  opts.on('-x', '--trace', 'Turn on line tracing') do
166
- options[:tracing] = true
166
+ options[:traceprint] = true
167
+ options[:nx] = true
167
168
  end
168
169
  opts.separator ''
169
170
  opts.on_tail('-?', '--help', 'Show this message') do
data/app/run.rb CHANGED
@@ -10,21 +10,24 @@ module Trepan
10
10
  # The caller must ensure that ARGV is set up to remove any debugger
11
11
  # arguments or things that the debugged program isn't supposed to
12
12
  # see. FIXME: Should we make ARGV an explicit parameter?
13
-
14
13
  def debug_program(ruby_path, options)
15
14
  # Make sure Ruby script syntax checks okay.
16
15
  # Otherwise we get a load message that looks like trepan8 has
17
16
  # a problem.
18
- output = `#{ruby_path} -c #{Trepan::PROG_SCRIPT.inspect} 2>&1`
19
- if $?.exitstatus != 0 and RUBY_PLATFORM !~ /mswin/
17
+
18
+ output = ruby_syntax_errors(Trepan::PROG_SCRIPT.inspect)
19
+ if output
20
20
  puts output
21
21
  exit $?.exitstatus
22
22
  end
23
23
 
24
- %w(highlight basename).each do |opt|
24
+ cmdproc = Debugger.handler.cmdproc
25
+ %w(highlight basename traceprint).each do |opt|
25
26
  opt = opt.to_sym
26
- Debugger.handler.cmdproc.settings[opt] = options[opt]
27
+ cmdproc.settings[opt] = options[opt]
27
28
  end
29
+ cmdproc.unconditional_prehooks.insert_if_new(-1, *cmdproc.trace_hook) if
30
+ options[:traceprint]
28
31
 
29
32
  # Record where we are we can know if the call stack has been
30
33
  # truncated or not.
@@ -44,8 +47,9 @@ module Trepan
44
47
  # Do a shell-like path lookup for prog_script and return the results.
45
48
  # If we can't find anything return prog_script.
46
49
  def whence_file(prog_script)
47
- if prog_script.index(File::SEPARATOR)
48
- # Don't search since this name has path separator components
50
+ if prog_script.start_with?(File::SEPARATOR) || prog_script.start_with?('.')
51
+ # Don't search since this name has path is explicitly absolute or
52
+ # relative.
49
53
  return prog_script
50
54
  end
51
55
  for dirname in ENV['PATH'].split(File::PATH_SEPARATOR) do
@@ -55,6 +59,14 @@ module Trepan
55
59
  # Failure
56
60
  return prog_script
57
61
  end
62
+
63
+ def ruby_syntax_errors(prog_script)
64
+ output = `#{RbConfig.ruby} -c #{prog_script} 2>&1`
65
+ if $?.exitstatus != 0 and RUBY_PLATFORM !~ /mswin/
66
+ return output
67
+ end
68
+ return nil
69
+ end
58
70
  end
59
71
 
60
72
  # Path name of Ruby interpreter we were invoked with. Is part of
@@ -71,4 +83,10 @@ if __FILE__ == $0
71
83
  puts whence_file('irb')
72
84
  puts whence_file('probably-does-not-exist')
73
85
  puts RbConfig.ruby
86
+ puts "#{__FILE__} is syntactically correct" unless
87
+ ruby_syntax_errors(__FILE__)
88
+ readme = File.join(File.dirname(__FILE__), '..', 'README.textile')
89
+ puts "#{readme} is not syntactically correct" if
90
+ ruby_syntax_errors(readme)
91
+
74
92
  end
data/app/util.rb CHANGED
@@ -45,6 +45,16 @@ module Trepan
45
45
  end
46
46
  return text
47
47
  end
48
+
49
+ # Suppress warnings. The main one we encounter is "already initialized
50
+ # constant" because perhaps another version readline has done that already.
51
+ def suppress_warnings
52
+ original_verbosity = $VERBOSE
53
+ $VERBOSE = nil
54
+ result = yield
55
+ $VERBOSE = original_verbosity
56
+ return result
57
+ end
48
58
  end
49
59
  end
50
60
 
@@ -55,7 +65,15 @@ if __FILE__ == $0
55
65
  puts safe_repr(string, 17)
56
66
  puts safe_repr(string.inspect, 17)
57
67
  puts safe_repr(string.inspect, 17, '')
58
- ## puts "main script in above is #{locs.size() - 1 - find_main_script(locs)}"
68
+ # ------------------------------------
69
+ # extract_expression
70
+ ['if condition("if")',
71
+ 'until until_termination',
72
+ 'return return_value',
73
+ 'nothing_to_be.done'
74
+ ].each do |stmt|
75
+ puts extract_expression stmt
76
+ end
59
77
 
60
78
  list = %w(disassemble disable distance up)
61
79
  p list
data/bin/trepan8 CHANGED
@@ -83,8 +83,6 @@ else
83
83
 
84
84
  # activate post-mortem
85
85
  Trepan.post_mortem if options[:post_mortem]
86
- options[:stop] = false if options[:tracing]
87
- Debugger.tracing = options[:tracing]
88
86
 
89
87
  if !options[:quit]
90
88
  if Debugger.started?
@@ -0,0 +1,17 @@
1
+ # Aliases to simulate some of the Perl debugger command set
2
+ alias = alias
3
+ alias R restart
4
+ alias b break
5
+ alias c continue
6
+ alias f list
7
+ alias n next
8
+ alias p pr
9
+ alias q quit
10
+ alias s step
11
+ alias v list
12
+ macro - Proc.new{|*args| "list -"}
13
+ macro E Proc.new{|*args| "info thread"}
14
+ macro L Proc.new{|*args| "info break"}
15
+ macro T Proc.new{|*args| "info stack"}
16
+ macro l Proc.new{|*args| "list>"}
17
+ macro r Proc.new{|*args| %w(finish step)}