trepanning 0.1.0 → 0.1.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 (181) hide show
  1. data/.gitignore +4 -0
  2. data/ChangeLog +1279 -235
  3. data/Makefile +13 -0
  4. data/NEWS +30 -0
  5. data/Rakefile +50 -14
  6. data/app/.gitignore +1 -0
  7. data/app/breakpoint.rb +7 -2
  8. data/app/brkptmgr.rb +12 -0
  9. data/app/cmd_parse.citrus +167 -0
  10. data/app/cmd_parse.kpeg +221 -0
  11. data/app/cmd_parse.rb +201 -0
  12. data/app/cmd_parser.rb +1914 -0
  13. data/app/complete.rb +79 -0
  14. data/app/condition.rb +1 -1
  15. data/app/core.rb +7 -11
  16. data/app/default.rb +1 -1
  17. data/app/disassemble.rb +3 -2
  18. data/app/file.rb +12 -36
  19. data/app/frame.rb +3 -2
  20. data/app/irb.rb +9 -5
  21. data/app/iseq.rb +46 -0
  22. data/app/options.rb +6 -30
  23. data/app/run.rb +5 -2
  24. data/app/util.rb +1 -2
  25. data/app/yarv.rb +11 -1
  26. data/bin/.gitignore +1 -0
  27. data/bin/trepan +6 -6
  28. data/data/.gitignore +1 -0
  29. data/interface/.gitignore +1 -0
  30. data/interface/base_intf.rb +9 -5
  31. data/interface/comcodes.rb +10 -8
  32. data/interface/user.rb +76 -17
  33. data/io/.gitignore +1 -0
  34. data/io/input.rb +39 -15
  35. data/io/tcpclient.rb +7 -1
  36. data/io/tcpfns.rb +5 -3
  37. data/io/tcpserver.rb +13 -10
  38. data/lib/.gitignore +1 -0
  39. data/lib/trepanning.rb +50 -13
  40. data/processor/.gitignore +1 -0
  41. data/processor/Makefile +7 -0
  42. data/processor/breakpoint.rb +7 -2
  43. data/processor/command/.gitignore +1 -0
  44. data/processor/command/Makefile +7 -0
  45. data/processor/command/alias.rb +2 -2
  46. data/processor/command/backtrace.rb +4 -0
  47. data/processor/command/base/cmd.rb +45 -2
  48. data/processor/command/base/subcmd.rb +4 -2
  49. data/processor/command/base/submgr.rb +23 -19
  50. data/processor/command/base/subsubcmd.rb +23 -1
  51. data/processor/command/base/subsubmgr.rb +13 -0
  52. data/processor/command/break.rb +34 -29
  53. data/processor/command/complete.rb +37 -0
  54. data/processor/command/condition.rb +2 -0
  55. data/processor/command/continue.rb +15 -18
  56. data/processor/command/disassemble.rb +5 -0
  57. data/processor/command/down.rb +1 -1
  58. data/processor/command/eval.rb +70 -0
  59. data/processor/command/exit.rb +4 -1
  60. data/processor/command/finish.rb +6 -4
  61. data/processor/command/frame.rb +6 -3
  62. data/processor/command/help.rb +97 -54
  63. data/processor/command/help/.gitignore +1 -0
  64. data/processor/command/help/README +10 -0
  65. data/processor/command/help/command.txt +48 -0
  66. data/processor/command/help/filename.txt +40 -0
  67. data/processor/command/help/location.txt +37 -0
  68. data/processor/command/info_subcmd/.gitignore +1 -0
  69. data/processor/command/info_subcmd/breakpoints.rb +9 -9
  70. data/processor/command/info_subcmd/{file.rb → files.rb} +92 -27
  71. data/processor/command/info_subcmd/frame.rb +41 -15
  72. data/processor/command/info_subcmd/iseq.rb +39 -17
  73. data/processor/command/info_subcmd/program.rb +2 -8
  74. data/processor/command/info_subcmd/registers.rb +12 -10
  75. data/processor/command/info_subcmd/registers_subcmd/.gitignore +1 -0
  76. data/processor/command/info_subcmd/ruby.rb +60 -0
  77. data/processor/command/irb.rb +26 -3
  78. data/processor/command/kill.rb +21 -10
  79. data/processor/command/list.rb +1 -1
  80. data/processor/command/macro.rb +37 -23
  81. data/processor/command/pr.rb +1 -1
  82. data/processor/command/reload.rb +4 -0
  83. data/processor/command/reload_subcmd/.gitignore +1 -0
  84. data/processor/command/restart.rb +9 -9
  85. data/processor/command/save.rb +29 -36
  86. data/processor/command/set_subcmd/.gitignore +1 -0
  87. data/processor/command/set_subcmd/auto_subcmd/.gitignore +1 -0
  88. data/processor/command/set_subcmd/confirm.rb +23 -0
  89. data/processor/command/set_subcmd/debug_subcmd/.gitignore +1 -0
  90. data/processor/command/set_subcmd/different.rb +2 -0
  91. data/processor/command/set_subcmd/events.rb +2 -0
  92. data/processor/command/set_subcmd/max.rb +9 -12
  93. data/processor/command/set_subcmd/max_subcmd/.gitignore +1 -0
  94. data/processor/command/set_subcmd/substitute_subcmd/.gitignore +1 -0
  95. data/processor/command/set_subcmd/trace.rb +7 -13
  96. data/processor/command/set_subcmd/trace_subcmd/.gitignore +1 -0
  97. data/processor/command/set_subcmd/trace_subcmd/buffer.rb +12 -27
  98. data/processor/command/set_subcmd/trace_subcmd/print.rb +10 -8
  99. data/processor/command/set_subcmd/trace_subcmd/var.rb +6 -10
  100. data/processor/command/show.rb +12 -1
  101. data/processor/command/show_subcmd/.gitignore +1 -0
  102. data/processor/command/show_subcmd/alias.rb +11 -15
  103. data/processor/command/show_subcmd/auto_subcmd/.gitignore +1 -0
  104. data/processor/command/show_subcmd/basename.rb +1 -9
  105. data/processor/command/show_subcmd/confirm.rb +25 -0
  106. data/processor/command/show_subcmd/debug_subcmd/.gitignore +1 -0
  107. data/processor/command/show_subcmd/macro.rb +32 -14
  108. data/processor/command/show_subcmd/max_subcmd/.gitignore +1 -0
  109. data/processor/command/show_subcmd/trace_subcmd/.gitignore +1 -0
  110. data/processor/command/show_subcmd/trace_subcmd/buffer.rb +11 -31
  111. data/processor/command/show_subcmd/trace_subcmd/print.rb +4 -20
  112. data/processor/command/source.rb +7 -1
  113. data/processor/command/up.rb +7 -4
  114. data/processor/default.rb +3 -1
  115. data/processor/eval.rb +13 -0
  116. data/processor/eventbuf.rb +3 -2
  117. data/processor/frame.rb +19 -0
  118. data/processor/help.rb +20 -0
  119. data/processor/load_cmds.rb +143 -24
  120. data/processor/location.rb +61 -10
  121. data/processor/main.rb +30 -11
  122. data/processor/mock.rb +5 -3
  123. data/processor/msg.rb +17 -0
  124. data/processor/running.rb +1 -1
  125. data/processor/subcmd.rb +3 -2
  126. data/processor/validate.rb +173 -185
  127. data/sample/.gitignore +1 -0
  128. data/sample/list-terminal-colors.rb +139 -0
  129. data/sample/rocky-dot-trepanrc +14 -0
  130. data/sample/rocky-trepan-colors.rb +47 -0
  131. data/test/Makefile +7 -0
  132. data/test/data/.gitignore +1 -0
  133. data/test/data/debugger-stop.cmd +3 -0
  134. data/test/data/debugger-stop.right +5 -0
  135. data/test/data/fname-with-blank.right +0 -3
  136. data/test/data/quit.right +0 -1
  137. data/test/data/quit2.cmd +6 -0
  138. data/test/data/quit2.right +3 -0
  139. data/test/data/testing.cmd +1 -0
  140. data/test/example/.gitignore +1 -0
  141. data/test/example/debugger-stop.rb +14 -0
  142. data/test/functional/.gitignore +2 -0
  143. data/test/functional/fn_helper.rb +7 -9
  144. data/test/functional/test-break-long.rb +7 -7
  145. data/test/functional/test-break.rb +7 -7
  146. data/test/functional/test-condition.rb +4 -4
  147. data/test/functional/test-delete.rb +6 -5
  148. data/test/functional/test-eval.rb +115 -0
  149. data/test/functional/test-raise.rb +1 -1
  150. data/test/functional/test-return.rb +1 -1
  151. data/test/integration/.gitignore +2 -0
  152. data/test/integration/helper.rb +6 -3
  153. data/test/integration/test-debugger-stop.rb +22 -0
  154. data/test/integration/test-quit.rb +8 -0
  155. data/test/unit/.gitignore +1 -0
  156. data/test/unit/Makefile +7 -0
  157. data/test/unit/test-app-brkpt.rb +0 -1
  158. data/test/unit/test-app-cmd_parse.rb +107 -0
  159. data/test/unit/test-app-cmd_parser.rb +22 -0
  160. data/test/unit/test-app-complete.rb +38 -0
  161. data/test/unit/test-app-condition.rb +20 -0
  162. data/test/unit/test-app-iseq.rb +31 -0
  163. data/test/unit/test-app-options.rb +9 -1
  164. data/test/unit/test-app-util.rb +0 -1
  165. data/test/unit/test-base-cmd.rb +46 -0
  166. data/test/unit/test-base-subcmd.rb +11 -2
  167. data/test/unit/test-base-submgr.rb +23 -0
  168. data/test/unit/test-base-subsubcmd.rb +20 -0
  169. data/test/unit/test-cmd-break.rb +22 -23
  170. data/test/unit/test-cmd-help.rb +4 -0
  171. data/test/unit/test-completion.rb +43 -0
  172. data/test/unit/test-io-tcpclient.rb +3 -2
  173. data/test/unit/test-proc-load_cmds.rb +10 -1
  174. data/test/unit/test-proc-location.rb +39 -0
  175. data/test/unit/test-proc-main.rb +1 -1
  176. data/test/unit/test-proc-validate.rb +47 -31
  177. data/trepanning.gemspec +45 -0
  178. metadata +247 -179
  179. data/app/core.rb-consider +0 -198
  180. data/test/functional/tmp/b3.rb +0 -5
  181. data/test/functional/tmp/immediate-bug1.rb +0 -9
@@ -0,0 +1 @@
1
+ /*~
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative 'base/cmd'
4
4
  require_relative '../../app/run'
5
5
  class Trepan::Command::RestartCommand < Trepan::Command
@@ -25,19 +25,19 @@ new copy of the debugger is used.
25
25
  dbgr = @proc.dbgr
26
26
  argv = dbgr.restart_argv
27
27
  if argv and argv.size > 0
28
- # unless File.executable?(argv[0])
29
- # msg(["File #{argv[0]} not executable.",
30
- # "Adding Ruby interpreter."])
31
- # argv.unshift Trepanning::ruby_path
32
- # end
33
28
  @proc.run_cmd(%w(show args))
34
29
  if not confirm('Restart (exec)?', false)
35
30
  msg "Restart not confirmed"
36
31
  else
37
- msg 'Restarting...'
38
- @proc.run_cmd(%w(save))
39
- # FIXME: Run atexit finalize routines?
32
+ if defined?(Trepan::PROG_UNRESOLVED_SCRIPT) &&
33
+ position = argv.index(Trepan::PROG_UNRESOLVED_SCRIPT)
34
+ save_filename = @proc.save_commands(:erase =>true)
35
+ argv.insert(position, '--command', save_filename) if save_filename
36
+ end
40
37
  Dir.chdir(RubyVM::OS_STARTUP_DIR)
38
+ msg 'Restarting using...'
39
+ msg "\t #{argv.inspect}"
40
+ @proc.finalize
41
41
  exec(*argv)
42
42
  end
43
43
  else
@@ -1,12 +1,12 @@
1
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
2
- require 'tmpdir'
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative 'base/cmd'
4
4
  class Trepan::Command::SaveCommand < Trepan::Command
5
5
 
6
6
  unless defined?(HELP)
7
7
  NAME = File.basename(__FILE__, '.rb')
8
8
  HELP = <<-HELP
9
- #{NAME} [filename]
9
+ #{NAME} [--[no-]erase] [--output|-o FILENAME]
10
10
 
11
11
  Save settings to file FILENAME. If FILENAME not given one will be made
12
12
  selected.
@@ -15,49 +15,42 @@ selected.
15
15
  CATEGORY = 'running'
16
16
  MAX_ARGS = 1 # Need at most this many
17
17
  SHORT_HELP = 'Send debugger state to a file'
18
+
19
+ DEFAULT_OPTIONS = { :erase => true, }
18
20
  end
19
21
 
20
- # This method runs the command
21
- def run(args)
22
- save_filename =
23
- if args.size > 1
24
- args[1]
25
- else
26
- @proc.settings[:save_cmdfile] ||
27
- File.join(Dir.tmpdir,
28
- Dir::Tmpname.make_tmpname(['trepanning-save', '.txt'], nil))
22
+ def parse_options(options, args) # :nodoc
23
+ parser = OptionParser.new do |opts|
24
+ opts.on("-e", "--[no-]erase",
25
+ "Add line to erase after reading") do
26
+ |v|
27
+ options[:erase] = v
29
28
  end
30
- begin
31
- save_file = File.open(save_filename, 'w')
32
- rescue => exc
33
- errmsg("Can't open #{save_filename} for writing.")
34
- errmsg("System reports: #{exc.inspect}")
35
- return
36
- end
37
- save_file.puts "#\n# Commands to restore trepanning environment\n#\n"
38
- @proc.commands.each do |cmd_name, cmd_obj|
39
- cmd_obj.save_command if cmd_obj.respond_to?(:save_command)
40
- next unless cmd_obj.is_a?(Trepan::SubcommandMgr)
41
- cmd_obj.subcmds.subcmds.each do |subcmd_name, subcmd_obj|
42
- save_file.puts subcmd_obj.save_command if
43
- subcmd_obj.respond_to?(:save_command)
44
- next unless subcmd_obj.is_a?(Trepan::SubSubcommandMgr)
45
- subcmd_obj.subcmds.subcmds.each do |subsubcmd_name, subsubcmd_obj|
46
- save_file.puts subsubcmd_obj.save_command if
47
- subsubcmd_obj.respond_to?(:save_command)
48
- end
29
+ opts.on("-o", "--output FILE", String,
30
+ "Save file to FILE. ") do
31
+ |filename|
32
+ options[:filename] = filename
49
33
  end
50
34
  end
51
- save_file.close
52
- msg "Debugger commands written to file: #{save_file.to_path}"
35
+ parser.parse(args)
36
+ return options
37
+ end
38
+
39
+ # This method runs the command
40
+ def run(args)
41
+ options = parse_options(DEFAULT_OPTIONS.dup, args[1..-1])
42
+ save_filename = @proc.save_commands(options)
43
+ msg "Debugger commands written to file: #{save_filename}" if
44
+ save_filename
53
45
  end
54
46
  end
55
47
 
56
48
  if __FILE__ == $0
57
49
  require_relative '../mock'
58
50
  dbgr, cmd = MockDebugger::setup
59
- require 'tmpdir'
60
- cmd.run([cmd.name, Dir.tmpdir])
61
51
  cmd.run([cmd.name])
62
- cmd.run([cmd.name, File.join(Dir.tmpdir, 'save_file.txt')])
52
+ # require_relative '../../lib/trepanning'; debugger
53
+ cmd.run([cmd.name, '--erase',
54
+ '--output', File.join(Dir.tmpdir, 'save_file.txt')])
55
+ # A good test would be to see we can read in those files without error.
63
56
  end
@@ -0,0 +1 @@
1
+ /*~
@@ -0,0 +1,23 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (C) 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
+ require_relative '../base/subcmd'
4
+
5
+ class Trepan::Subcommand::SetConfirm < Trepan::SetBoolSubcommand
6
+ unless defined?(HELP)
7
+ Trepanning::Subcommand.set_name_prefix(__FILE__, self)
8
+ HELP = "Set whether to confirm potentially dangerous operations."
9
+ IN_LIST = true
10
+ MIN_ABBREV = 'co'.size
11
+ end
12
+ end
13
+
14
+ if __FILE__ == $0
15
+ # Demo it.
16
+ $0 = __FILE__ + 'notagain' # So we don't run this agin
17
+ require_relative '../../mock'
18
+ cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetConfirm, false)
19
+ cmd.run(cmd.prefix + ['off'])
20
+ cmd.run(cmd.prefix + ['ofn'])
21
+ cmd.run(cmd.prefix)
22
+ puts cmd.save_command
23
+ end
@@ -36,6 +36,8 @@ override this setting."
36
36
  SHORT_HELP = "Set to make sure 'next/step' move to a new position."
37
37
  end
38
38
 
39
+ completion %w(on off nostack)
40
+
39
41
  def run(args)
40
42
  if args.size == 3 && 'nostack' == args[2]
41
43
  @proc.settings[:different] = 'nostack'
@@ -25,6 +25,8 @@ Examples:
25
25
  SHORT_HELP = 'Set trace events we may stop on.'
26
26
  end
27
27
 
28
+ completion Trace.const_get("EVENTS").map{|event| event.to_s}
29
+
28
30
  def save_command
29
31
  step_events_list = @proc.core.step_events_list
30
32
  step_events_list = 'brkpt' unless step_events_list
@@ -18,17 +18,14 @@ class Trepan::SubSubcommand::SetMax < Trepan::SubSubcommandMgr
18
18
  end
19
19
 
20
20
  if __FILE__ == $0
21
+ # Demo it.
21
22
  require_relative '../../mock'
22
- dbgr, cmd = MockDebugger::setup('set')
23
- cmds = dbgr.core.processor.commands
24
- set_cmd = cmds['set']
25
- command = Trepan::SubSubcommand::SetMax.new(dbgr.core.processor,
26
- set_cmd)
27
- name = File.basename(__FILE__, '.rb')
28
- cmd_args = ['set', name]
29
- set_cmd.instance_variable_set('@last_args', cmd_args)
30
- command.run(cmd_args)
31
- require_relative '../../../lib/trepanning'
32
- # Trepan.debug
33
- command.run(['set', name, 'string', 30])
23
+ dbgr, parent_cmd = MockDebugger::setup('set', false)
24
+ cmd = Trepan::SubSubcommand::SetMax.new(dbgr.core.processor,
25
+ parent_cmd)
26
+ cmd.run(cmd.prefix + ['string', '30'])
27
+
28
+ %w(s lis foo).each do |prefix|
29
+ p [prefix, cmd.complete(prefix)]
30
+ end
34
31
  end
@@ -24,19 +24,13 @@ end
24
24
  if __FILE__ == $0
25
25
  # Demo it.
26
26
  require_relative '../../mock'
27
- require_relative '../../subcmd'
28
- require_relative '../../hook'
29
- name = File.basename(__FILE__, '.rb')
30
-
31
- # FIXME: DRY the below code
32
- dbgr, set_cmd = MockDebugger::setup('set')
33
- command = Trepan::SubSubcommand::SetTrace.new(dbgr.core.processor,
34
- set_cmd)
35
- name = File.basename(__FILE__, '.rb')
36
- cmd_args = ['set', name]
37
- set_cmd.instance_variable_set('@last_args', cmd_args)
27
+ dbgr, cmd = MockDebugger::setup('set')
28
+ cmds = dbgr.core.processor.commands
29
+ set_cmd = cmds['set']
30
+ command = Trepan::SubSubcommand::SetTrace.new(dbgr.core.processor,
31
+ set_cmd)
32
+ set_cmd.instance_variable_set('@last_args', command.class.const_get('CMD'))
38
33
  # require_relative '../../../lib/trepanning'
39
34
  # Trepan.debug
40
- command.run(cmd_args)
41
- command.run(['set', name, '*'])
35
+ command.run(command.class.const_get('PREFIX'))
42
36
  end
@@ -1,17 +1,16 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative '../../base/subsubcmd'
4
4
  require_relative '../trace'
5
5
  class Trepan::SubSubcommand::SetTraceBuffer < Trepan::SetBoolSubSubcommand
6
+ Trepanning::SubSubcommand.set_name_prefix(__FILE__, self)
6
7
  unless defined?(HELP)
7
- HELP =
8
- "set trace buffer [on|off|1|0]
8
+ HELP = <<-EOH
9
+ #{CMD} [on|off|1|0]
9
10
 
10
11
  Set saving trace events in a buffer
11
- "
12
+ EOH
12
13
  MIN_ABBREV = 'b'.size
13
- NAME = File.basename(__FILE__, '.rb')
14
- PREFIX = %w(set trace buffer)
15
14
  SHORT_HELP = 'Set saving trace events in a buffer'
16
15
  end
17
16
 
@@ -31,26 +30,12 @@ end
31
30
  if __FILE__ == $0
32
31
  # Demo it.
33
32
  require_relative '../../../mock'
34
- require_relative '../../../subcmd'
35
- name = File.basename(__FILE__, '.rb')
36
-
37
- # FIXME: DRY the below code
38
- dbgr, set_cmd = MockDebugger::setup('set')
39
- trace_cmd = Trepan::SubSubcommand::SetTrace.new(dbgr.core.processor,
40
- set_cmd)
41
-
42
- # FIXME: remove the 'join' below
43
- cmd_name = Trepan::SubSubcommand::SetTraceBuffer::PREFIX.join('')
44
- subcmd = Trepan::SubSubcommand::SetTraceBuffer.new(set_cmd.proc,
45
- trace_cmd,
46
- cmd_name)
47
- # require_relative '../../../../lib/trepanning'
48
- # dbgr = Trepan.new
49
- # dbgr.debugger
50
-
51
- subcmd.run([cmd_name])
52
- %w(off on 1 0).each { |arg| subcmd.run([cmd_name, arg]) }
53
- puts subcmd.save_command()
54
-
33
+ require_relative '../trace'
34
+ cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetTrace,
35
+ Trepan::SubSubcommand::SetTraceBuffer)
36
+ %w(off on 1 0).each do |arg|
37
+ cmd.run([cmd.name, arg])
38
+ end
39
+ puts cmd.save_command()
55
40
  end
56
41
 
@@ -1,17 +1,17 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative '../../base/subsubcmd'
4
4
  require_relative '../trace'
5
5
  class Trepan::SubSubcommand::SetTracePrint < Trepan::SetBoolSubSubcommand
6
+ Trepanning::SubSubcommand.set_name_prefix(__FILE__, self)
6
7
  unless defined?(HELP)
7
- HELP =
8
- "set trace print [on|off|1|0]
8
+ HELP = <<-EOH
9
+ "#{CMD} [on|off|1|0]
9
10
 
10
- Set printing trace events."
11
+ Set printing trace events.
12
+ EOH
11
13
 
12
14
  MIN_ABBREV = 'p'.size
13
- NAME = File.basename(__FILE__, '.rb')
14
- PREFIX = %w(set trace print)
15
15
  SHORT_HELP = 'Set print trace events'
16
16
  end
17
17
 
@@ -32,7 +32,9 @@ if __FILE__ == $0
32
32
  require_relative '../trace'
33
33
  cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetTrace,
34
34
  Trepan::SubSubcommand::SetTracePrint)
35
- %w(off on 0 1).each { |arg| cmd.run([cmd.name, arg]) }
36
- puts '-' * 10
35
+ %w(off on 1 0).each do |arg|
36
+ cmd.run([cmd.name, arg])
37
+ end
38
+ puts cmd.save_command()
37
39
  end
38
40
 
@@ -1,22 +1,22 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative '../../base/subsubcmd'
4
4
  require_relative '../trace'
5
5
  class Trepan::SubSubcommand::SetTraceVar < Trepan::SubSubcommand
6
+ Trepanning::SubSubcommand.set_name_prefix(__FILE__, self)
6
7
  unless defined?(HELP)
7
- HELP =
8
- "set trace var GLOBAL_VARIABLE
8
+ HELP = <<-EOH
9
+ #{CMD} var GLOBAL_VARIABLE
9
10
 
10
11
  The debugger calls 'trace_var' to trace changes to the value of
11
12
  GLOBAL_VARIABLE. Note in contrast to other events, stopping for
12
13
  variable tracing occurs *after* the event, not before.
13
14
 
14
- See also 'set events'."
15
+ See also 'set events'.
16
+ EOH
15
17
 
16
18
  MIN_ABBREV = 'v'.size
17
- NAME = File.basename(__FILE__, '.rb')
18
19
  SHORT_HELP = "Set to display trace a global variable."
19
- PREFIX = %w(set trace var)
20
20
  end
21
21
 
22
22
  def run(args)
@@ -39,7 +39,6 @@ if __FILE__ == $0
39
39
  # Demo it.
40
40
  require_relative '../../../mock'
41
41
  require_relative '../../../subcmd'
42
- name = File.basename(__FILE__, '.rb')
43
42
 
44
43
  # FIXME: DRY the below code
45
44
  dbgr, set_cmd = MockDebugger::setup('set')
@@ -54,8 +53,5 @@ if __FILE__ == $0
54
53
  # dbgr = Trepan.new
55
54
  # dbgr.debugger
56
55
  eval('set_cmd.proc.frame_setup(RubyVM::ThreadFrame::current); setx_cmd.run([])')
57
-
58
- # name = File.basename(__FILE__, '.rb')
59
- # subcommand.summary_help(name)
60
56
  end
61
57
 
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative 'base/submgr'
4
4
 
5
5
  class Trepan::Command::ShowCommand < Trepan::SubcommandMgr
@@ -18,6 +18,17 @@ Type "help #{NAME} *" for just a list of "#{NAME}" subcommands.
18
18
  NEED_STACK = false
19
19
  SHORT_HELP = 'Show parts of the debugger environment'
20
20
  end
21
+
22
+ def run(args)
23
+ if args.size > 1
24
+ first = args[1].downcase
25
+ alen = 'auto'.size
26
+ args[1..1] = ['auto', first[alen..-1]] if
27
+ first.start_with?('auto') && first.size > alen
28
+ end
29
+ super
30
+ end
31
+
21
32
  end
22
33
 
23
34
  if __FILE__ == $0
@@ -0,0 +1 @@
1
+ /*~
@@ -3,17 +3,22 @@
3
3
  require_relative '../base/subcmd'
4
4
 
5
5
  class Trepan::Subcommand::ShowAlias < Trepan::Subcommand
6
+ Trepanning::Subcommand.set_name_prefix(__FILE__, self)
6
7
  unless defined?(HELP)
7
- Trepanning::Subcommand.set_name_prefix(__FILE__, self)
8
- HELP = "show alias [NAME1 NAME2 ...]
8
+ HELP = <<-EOH
9
+ #{CMD} [NAME1 NAME2 ...]
9
10
 
10
11
  If aliases names are given, show their definition. If left blank, show
11
- all alias names"
12
-
12
+ all alias names
13
+ EOH
13
14
  MIN_ABBREV = 'al'.size
14
15
  SHORT_HELP = "Show defined aliases"
15
16
  end
16
17
 
18
+ def complete(prefix)
19
+ Trepan::Complete.complete_token(@proc.aliases.keys, prefix)
20
+ end
21
+
17
22
  def run(args)
18
23
  if args.size > 2
19
24
  args[2..-1].each do |alias_name|
@@ -35,15 +40,6 @@ end
35
40
  if __FILE__ == $0
36
41
  # Demo it.
37
42
  require_relative '../../mock'
38
- name = File.basename(__FILE__, '.rb')
39
-
40
- # FIXME: DRY the below code
41
- dbgr, cmd = MockDebugger::setup('show')
42
- subcommand = Trepan::Subcommand::ShowAlias.new(cmd)
43
-
44
- name = File.basename(__FILE__, '.rb')
45
- subcommand.summary_help(name)
46
- puts
47
- subcommand.run(%W(show #{name}))
48
- subcommand.run(%w(show #{name} u foo))
43
+ cmd = MockDebugger::sub_setup(Trepan::Subcommand::ShowAlias)
44
+ cmd.run(cmd.prefix + %w(u foo))
49
45
  end