trepanning 0.1.3 → 0.1.4

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 (134) hide show
  1. data/ChangeLog +465 -0
  2. data/NEWS +26 -1
  3. data/README.textile +1 -1
  4. data/app/cmd_parse.kpeg +2 -1
  5. data/app/cmd_parser.rb +30 -3
  6. data/app/core.rb +1 -1
  7. data/app/display.rb +39 -1
  8. data/app/frame.rb +1 -1
  9. data/app/irb.rb +42 -40
  10. data/app/options.rb +3 -2
  11. data/app/run.rb +21 -7
  12. data/app/util.rb +12 -2
  13. data/app/yarv.rb +0 -2
  14. data/bin/trepan +2 -3
  15. data/data/perldb.bindings +17 -0
  16. data/interface/script.rb +1 -1
  17. data/interface/server.rb +1 -1
  18. data/interface/user.rb +3 -1
  19. data/{interface/base_intf.rb → interface.rb} +1 -1
  20. data/io/input.rb +1 -3
  21. data/io/null_output.rb +1 -1
  22. data/io/string_array.rb +1 -2
  23. data/io/tcpclient.rb +1 -1
  24. data/io/tcpserver.rb +1 -1
  25. data/{io/base_io.rb → io.rb} +0 -0
  26. data/lib/trepanning.rb +2 -1
  27. data/processor/command/alias.rb +15 -4
  28. data/processor/command/backtrace.rb +2 -2
  29. data/processor/command/base/subcmd.rb +1 -5
  30. data/processor/command/base/submgr.rb +1 -1
  31. data/processor/command/base/subsubcmd.rb +1 -1
  32. data/processor/command/base/subsubmgr.rb +4 -4
  33. data/processor/command/break.rb +1 -1
  34. data/processor/command/complete.rb +1 -1
  35. data/processor/command/condition.rb +2 -2
  36. data/processor/command/continue.rb +1 -1
  37. data/processor/command/debug.rb +1 -1
  38. data/processor/command/delete.rb +10 -7
  39. data/processor/command/directory.rb +1 -1
  40. data/processor/command/disable.rb +25 -19
  41. data/processor/command/disassemble.rb +1 -1
  42. data/processor/command/display.rb +35 -28
  43. data/processor/command/down.rb +8 -8
  44. data/processor/command/edit.rb +1 -1
  45. data/processor/command/enable.rb +10 -12
  46. data/processor/command/eval.rb +1 -1
  47. data/processor/command/exit.rb +1 -1
  48. data/processor/command/finish.rb +1 -1
  49. data/processor/command/frame.rb +2 -2
  50. data/processor/command/help.rb +6 -8
  51. data/processor/command/info.rb +2 -0
  52. data/processor/command/info_subcmd/files.rb +17 -11
  53. data/processor/command/info_subcmd/frame.rb +0 -1
  54. data/processor/command/info_subcmd/locals.rb +6 -73
  55. data/processor/command/info_subcmd/source.rb +10 -4
  56. data/processor/command/info_subcmd/variables.rb +34 -0
  57. data/processor/command/info_subcmd/variables_subcmd/.gitignore +1 -0
  58. data/processor/command/info_subcmd/variables_subcmd/class.rb +40 -0
  59. data/processor/command/info_subcmd/variables_subcmd/constant.rb +41 -0
  60. data/processor/command/info_subcmd/{globals.rb → variables_subcmd/globals.rb} +21 -16
  61. data/processor/command/info_subcmd/variables_subcmd/instance.rb +41 -0
  62. data/processor/command/info_subcmd/variables_subcmd/locals.rb +99 -0
  63. data/processor/command/kill.rb +9 -8
  64. data/processor/command/list.rb +9 -107
  65. data/processor/command/macro.rb +27 -9
  66. data/processor/command/next.rb +1 -1
  67. data/processor/command/nocache.rb +2 -2
  68. data/processor/command/parsetree.rb +1 -1
  69. data/processor/command/pp.rb +1 -1
  70. data/processor/command/pr.rb +1 -1
  71. data/processor/command/ps.rb +1 -1
  72. data/processor/command/quit.rb +18 -7
  73. data/processor/command/raise.rb +1 -1
  74. data/processor/command/reload.rb +10 -10
  75. data/processor/command/restart.rb +1 -1
  76. data/processor/command/save.rb +1 -1
  77. data/processor/command/server.rb +1 -1
  78. data/processor/command/set_subcmd/auto.rb +7 -1
  79. data/processor/command/set_subcmd/different.rb +5 -4
  80. data/processor/command/set_subcmd/substitute_subcmd/eval.rb +2 -2
  81. data/processor/command/set_subcmd/trace.rb +5 -4
  82. data/processor/command/set_subcmd/trace_subcmd/print.rb +4 -3
  83. data/processor/command/shell.rb +5 -3
  84. data/processor/command/show_subcmd/{alias.rb → aliases.rb} +2 -2
  85. data/processor/command/show_subcmd/auto_subcmd/eval.rb +2 -7
  86. data/processor/command/show_subcmd/trace_subcmd/print.rb +3 -3
  87. data/processor/command/show_subcmd/version.rb +24 -0
  88. data/processor/command/source.rb +1 -1
  89. data/processor/command/step.rb +1 -1
  90. data/processor/command/tbreak.rb +1 -1
  91. data/processor/command/unalias.rb +11 -6
  92. data/processor/command/undisplay.rb +14 -10
  93. data/processor/command/up.rb +12 -13
  94. data/processor/command/watchg.rb +1 -1
  95. data/processor/{command/base/cmd.rb → command.rb} +3 -2
  96. data/processor/display.rb +34 -0
  97. data/processor/frame.rb +2 -2
  98. data/processor/help.rb +6 -4
  99. data/processor/hook.rb +95 -96
  100. data/processor/list.rb +146 -0
  101. data/processor/location.rb +26 -0
  102. data/processor/mock.rb +4 -7
  103. data/processor/msg.rb +54 -42
  104. data/processor/running.rb +6 -3
  105. data/processor/subcmd.rb +16 -41
  106. data/processor/validate.rb +6 -9
  107. data/{processor/main.rb → processor.rb} +11 -40
  108. data/sample/rocky-trepan-colors.rb +0 -1
  109. data/test/data/enable.cmd +1 -1
  110. data/test/data/trace.cmd +6 -0
  111. data/test/data/trace.right +39 -0
  112. data/test/example/gcd.rb +0 -1
  113. data/test/functional/test-next.rb +1 -1
  114. data/test/integration/helper.rb +4 -0
  115. data/test/integration/test-trace.rb +18 -0
  116. data/test/unit/cmd-helper.rb +4 -4
  117. data/test/unit/test-app-cmd_parse.rb +1 -1
  118. data/test/unit/test-app-display.rb +22 -0
  119. data/test/unit/test-app-options.rb +14 -10
  120. data/test/unit/test-app-run.rb +7 -1
  121. data/test/unit/test-base-subcmd.rb +1 -1
  122. data/test/unit/test-cmd-kill.rb +11 -4
  123. data/test/unit/test-cmd-parse_list_cmd.rb +1 -1
  124. data/test/unit/{test-base-cmd.rb → test-command.rb} +1 -1
  125. data/test/unit/test-proc-eval.rb +1 -2
  126. data/test/unit/test-proc-frame.rb +1 -2
  127. data/test/unit/test-proc-list.rb +52 -0
  128. data/test/unit/test-proc-load_cmds.rb +1 -1
  129. data/test/unit/test-proc-location.rb +11 -4
  130. data/test/unit/test-proc-main.rb +1 -1
  131. data/test/unit/test-proc-validate.rb +1 -2
  132. data/test/unit/test-subcmd-help.rb +1 -1
  133. data/trepanning.gemspec +1 -1
  134. metadata +26 -12
@@ -6,7 +6,13 @@ require_relative '../base/subsubmgr'
6
6
  class Trepan::SubSubcommand::SetAuto < Trepan::SubSubcommandMgr
7
7
  unless defined?(HELP)
8
8
  Trepanning::Subcommand.set_name_prefix(__FILE__, self)
9
- HELP = 'Set controls for things with some sort of "automatic" default behavior'
9
+ HELP = <<-EOH
10
+ Set controls for things with some sort of "automatic" default behavior.
11
+
12
+ See "#{PREFIX.join(' ')} *" for a list of subcommands or "#{PREFIX.join(' ')} <name>"
13
+ for help on a particular trace subcommand.
14
+ EOH
15
+ SHORT_HELP = 'Set controls for some "automatic" default behaviors'
10
16
  end
11
17
  end
12
18
 
@@ -5,10 +5,10 @@ require_relative '../base/subcmd'
5
5
  class Trepan::Subcommand::SetDifferent < Trepan::SetBoolSubcommand
6
6
  unless defined?(HELP)
7
7
  Trepanning::Subcommand.set_name_prefix(__FILE__, self)
8
- HELP = "
9
- set different [on|off|nostack]
8
+ HELP = <<-EOH
9
+ #{PREFIX.join(' ')} [on|off|nostack]
10
10
 
11
- Set to make sure 'next/step' move to a new position.
11
+ Set to make sure 'next' or 'step' moves to a new position.
12
12
 
13
13
  Due to the interpretive, expression-oriented nature of the Ruby
14
14
  Language and implementation, each line often may contain many possible
@@ -29,7 +29,8 @@ a given line. Also you can use 'next', but that also stepping into
29
29
  functions on different lines to also be skipped.
30
30
 
31
31
  See also 'step', 'next' which have suffixes '+' and '-' which
32
- override this setting."
32
+ override this setting.
33
+ EOH
33
34
 
34
35
  IN_LIST = true
35
36
  MIN_ABBREV = 'dif'.size
@@ -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 '../../frame'
4
4
  require_relative '../../base/subsubcmd'
5
5
  require_relative '../substitute'
@@ -10,7 +10,7 @@ class Trepan::SubSubcommand::SetSubstituteEval < Trepan::SubSubcommand
10
10
  'set substitute eval [FRAME-NUM]
11
11
 
12
12
  Causes lines in an EVAL frame to show up as we stop/step through them.
13
- The text fror the eval string comes from the current frame.
13
+ The text for the eval string comes from the current frame.
14
14
 
15
15
  FRAME-NUM is a relative frame number unless prefaced with an "=" which
16
16
  indicates how many frames prior to move. The default is "0"
@@ -6,14 +6,15 @@ require_relative '../base/subsubmgr'
6
6
  class Trepan::SubSubcommand::SetTrace < Trepan::SubSubcommandMgr
7
7
  unless defined?(HELP)
8
8
  Trepanning::Subcommand.set_name_prefix(__FILE__, self)
9
- HELP = "Set tracing of various sorts.
9
+ HELP = <<-EOH
10
+ Set tracing of various sorts.
10
11
 
11
12
  The types of tracing include events from the trace buffer, or printing
12
13
  those events.
13
14
 
14
- See 'help #{PREFIX.join(' ')} *' for a list of subcommands or 'help set trace
15
- <name>' for help on a particular trace subcommand."
16
-
15
+ See "help #{PREFIX.join(' ')} *" for a list of subcommands or "help #{PREFIX.join(' ')} <name>"
16
+ for help on a particular trace subcommand.
17
+ EOH
17
18
  IN_LIST = true
18
19
  MIN_ABBREV = 'tr'.size
19
20
  SHORT_HELP = 'Set tracing of various sorts.'
@@ -6,13 +6,14 @@ class Trepan::SubSubcommand::SetTracePrint < Trepan::SetBoolSubSubcommand
6
6
  unless defined?(HELP)
7
7
  Trepanning::SubSubcommand.set_name_prefix(__FILE__, self)
8
8
  HELP = <<-EOH
9
- #{CMD} [on|off|1|0]
9
+ #{CMD} [on|off]
10
10
 
11
- Set printing trace events.
11
+ Set printing trace events. This is similar to "set -x" tracing in
12
+ POSIX shells.
12
13
  EOH
13
14
 
14
15
  MIN_ABBREV = 'p'.size
15
- SHORT_HELP = 'Set print trace events'
16
+ SHORT_HELP = 'Set print trace events, like "set -x" of POSIX shell'
16
17
  end
17
18
 
18
19
  def run(args)
@@ -1,10 +1,12 @@
1
1
  # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
2
2
  require 'irb'
3
- require_relative 'base/cmd'
3
+ require_relative '../command'
4
4
  require_relative '../../app/irb'
5
+
5
6
  class Trepan::Command::IRBCommand < Trepan::Command
6
7
 
7
8
  unless defined?(HELP)
9
+ require_relative '../../app/irb'
8
10
  NAME = File.basename(__FILE__, '.rb')
9
11
  HELP = <<-HELP
10
12
  #{NAME} [-d]
@@ -37,7 +39,7 @@ Here then is a loop to query VM stack values:
37
39
  ALIASES = %w(irb)
38
40
  CATEGORY = 'support'
39
41
  MAX_ARGS = 1 # Need at most this many
40
- SHORT_HELP = "Run #{NAME} as a command subshell"
42
+ SHORT_HELP = "Run irb as a command shell"
41
43
  end
42
44
 
43
45
  # This method runs the command
@@ -59,8 +61,8 @@ Here then is a loop to query VM stack values:
59
61
  end
60
62
 
61
63
  $trepan = @proc.dbgr
64
+ $trepan_cmdproc = @proc
62
65
  if add_debugging
63
- $trepan_cmdproc = @proc
64
66
  $trepan_frame = @proc.frame
65
67
  end
66
68
  $trepan_in_irb = true
@@ -2,7 +2,7 @@
2
2
  # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative '../base/subcmd'
4
4
 
5
- class Trepan::Subcommand::ShowAlias < Trepan::Subcommand
5
+ class Trepan::Subcommand::ShowAliases < Trepan::Subcommand
6
6
  Trepanning::Subcommand.set_name_prefix(__FILE__, self)
7
7
  unless defined?(HELP)
8
8
  HELP = <<-EOH
@@ -31,7 +31,7 @@ all alias names
31
31
  elsif @proc.aliases.empty?
32
32
  msg "No aliases defined."
33
33
  else
34
- section "List of aliases names currently defined:"
34
+ section "List of alias names currently defined:"
35
35
  msg columnize_commands(@proc.aliases.keys.sort)
36
36
  end
37
37
  end
@@ -1,18 +1,13 @@
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
 
5
5
  class Trepan::SubSubcommand::ShowAutoEval < Trepan::ShowBoolSubSubcommand
6
6
  unless defined?(HELP)
7
- HELP = "set auto eval [ON|OFF]
8
-
9
- Set this on if you want things that don't look like debugger command to be eval'd
10
- as a string."
11
-
7
+ HELP = "Show evaluation of unrecognized debugger commands"
12
8
  MIN_ABBREV = 'ev'.size
13
9
  NAME = File.basename(__FILE__, '.rb')
14
10
  PREFIX = %w(show auto eval)
15
- SHORT_HELP = "Show evaluation of unrecognized debugger commands"
16
11
  end
17
12
 
18
13
  end
@@ -4,11 +4,11 @@ require_relative '../../base/subsubcmd'
4
4
 
5
5
  class Trepan::SubSubcommand::ShowTracePrint < Trepan::ShowBoolSubSubcommand
6
6
  unless defined?(HELP)
7
- HELP = "Show tracing print status"
7
+ HELP = "Show tracing print (set -x) status"
8
8
  MIN_ABBREV = 'p'.size
9
9
  NAME = File.basename(__FILE__, '.rb')
10
- PREFIX = %w(show trace buffer)
11
- SHORT_HELP = "Show tracing print status"
10
+ PREFIX = %w(show trace print)
11
+ SHORT_HELP = "Show tracing print (set -x) status"
12
12
  end
13
13
 
14
14
  end
@@ -0,0 +1,24 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
+ require_relative '../base/subcmd'
4
+ require_relative '../../../app/options'
5
+
6
+ class Trepan::Subcommand::ShowVersion < Trepan::Subcommand
7
+ unless defined?(HELP)
8
+ Trepanning::Subcommand.set_name_prefix(__FILE__, self)
9
+ HELP = "Show debugger name and version"
10
+ end
11
+
12
+ def run(args)
13
+ msg Trepan.show_version
14
+ end
15
+
16
+ end
17
+
18
+ if __FILE__ == $0
19
+ # Demo it.
20
+ require_relative '../../mock'
21
+ dbgr, parent_cmd = MockDebugger::setup('show')
22
+ cmd = Trepan::SubSubcommand::ShowVersion.new(parent_cmd)
23
+ cmd.run(cmd.prefix)
24
+ end
@@ -3,7 +3,7 @@
3
3
  require 'optparse'
4
4
 
5
5
  # Our local modules
6
- require_relative 'base/cmd'
6
+ require_relative '../command'
7
7
  require_relative '../../interface/script'
8
8
  require_relative '../../io/null_output'
9
9
  require_relative '../../app/default'
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
3
- require_relative 'base/cmd'
3
+ require_relative '../command'
4
4
  require_relative '../../app/condition'
5
5
  class Trepan::Command::StepCommand < Trepan::Command
6
6
 
@@ -1,4 +1,4 @@
1
- require_relative './base/cmd'
1
+ require_relative './../command'
2
2
  require_relative 'break'
3
3
 
4
4
  class Trepan::Command::SetTempBreakpointCommand <
@@ -1,16 +1,17 @@
1
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
2
- require_relative 'base/cmd'
1
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
2
+ require_relative '../command'
3
+ require_relative '../../app/complete'
3
4
 
4
5
  class Trepan::Command::UnaliasCommand < Trepan::Command
5
6
 
6
7
  unless defined?(HELP)
7
- HELP =
8
- "unalias COMMAND
8
+ HELP = <<-HELP
9
+ unalias ALIAS
9
10
 
10
- Remove alias for COMMAND
11
+ Remove alias ALIAS
11
12
 
12
13
  See also 'alias'.
13
- "
14
+ HELP
14
15
 
15
16
  CATEGORY = 'support'
16
17
  MIN_ARGS = 1
@@ -20,6 +21,10 @@ See also 'alias'.
20
21
  SHORT_HELP = 'Remove an alias'
21
22
  end
22
23
 
24
+ def complete(prefix)
25
+ Trepan::Complete.complete_token(@proc.aliases.keys, prefix)
26
+ end
27
+
23
28
  # Run command.
24
29
  def run(args)
25
30
  args[1..-1].each do |arg|
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
3
- require_relative 'base/cmd'
2
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
+ require_relative '../command'
4
4
 
5
5
  # undisplay display-number...
6
6
  class Trepan::Command::UndisplayCommand < Trepan::Command
@@ -8,37 +8,41 @@ class Trepan::Command::UndisplayCommand < Trepan::Command
8
8
  unless defined?(HELP)
9
9
  NAME = File.basename(__FILE__, '.rb')
10
10
  HELP = <<EOH
11
- undisplay DISPLAY_NUMBER ...
11
+ #{NAME} DISPLAY_NUMBER ...
12
12
  Cancel some expressions to be displayed when program stops.
13
13
  Arguments are the code numbers of the expressions to stop displaying.
14
14
  No argument means cancel all automatic-display expressions.
15
15
  "delete display" has the same effect as this command.
16
- Do "info display" to see current list of code numbers.
16
+ Use "info display" to see current list of display numbers.
17
17
  EOH
18
18
 
19
- ALIASES = %w(und)
20
19
  CATEGORY = 'data'
21
20
  NEED_STACK = false
22
21
  SHORT_HELP = 'Cancel some expressions to be displayed when program stops'
23
22
  end
24
23
 
24
+ def complete(prefix)
25
+ @proc.displays.nums.map{|disp| disp.to_s}
26
+ end
27
+
25
28
  def run(args)
26
29
 
27
30
  if args.size == 1
28
- @proc.displays.clear
29
- return
31
+ if confirm('Delete all displays?', false)
32
+ @proc.displays.clear
33
+ return
34
+ end
30
35
  end
31
36
  opts = {}
32
37
  args[1..-1].each do |arg|
33
- opts[:msg_on_error] = '%s must be a display number' % arg
38
+ opts = {:msg_on_error => '%s must be a display number' % arg}
34
39
  i = @proc.get_an_int(arg, opts)
35
40
  if i
36
41
  unless @proc.displays.delete_index(i)
37
- errmsg("no display number %d." % i)
42
+ errmsg("No display number %d." % i)
38
43
  return
39
44
  end
40
45
  end
41
- return false
42
46
  end
43
47
  end
44
48
  end
@@ -1,16 +1,15 @@
1
1
  # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
2
- require_relative 'base/cmd'
2
+ require_relative '../command'
3
+ require_relative '../../app/util'
3
4
 
4
- # up command. Like 'down' butthe direction (set by DIRECTION) is different.
5
+ # up command. Like 'down' but the direction (set by DIRECTION) is different.
5
6
  #
6
7
  # NOTE: The down command subclasses this, so beware when changing!
7
8
  class Trepan::Command::UpCommand < Trepan::Command
8
9
 
9
- # Silence already initialized constant .. warnings
10
- old_verbose = $VERBOSE
11
- $VERBOSE = nil
12
- NAME = File.basename(__FILE__, '.rb')
13
- HELP = <<-HELP
10
+ Trepan::Util.suppress_warnings {
11
+ NAME = File.basename(__FILE__, '.rb')
12
+ HELP = <<-HELP
14
13
  #{NAME} [count]
15
14
 
16
15
  Move the current frame up in the stack trace (to an older frame). 0 is
@@ -19,12 +18,12 @@ the most recent frame. If no count is given, move up 1.
19
18
  See also 'down' and 'frame'.
20
19
  HELP
21
20
 
22
- ALIASES = %w(u)
23
- CATEGORY = 'stack'
24
- MAX_ARGS = 1 # Need at most this many
25
- NEED_STACK = true
26
- SHORT_HELP = 'Move frame in the direction of the caller of the last-selected frame'
27
- $VERBOSE = old_verbose
21
+ ALIASES = %w(u)
22
+ CATEGORY = 'stack'
23
+ MAX_ARGS = 1 # Need at most this many
24
+ NEED_STACK = true
25
+ SHORT_HELP = 'Move frame in the direction of the caller of the last-selected frame'
26
+ }
28
27
 
29
28
  require_relative '../../app/frame'
30
29
  include Trepan::Frame
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
- require_relative 'base/cmd'
3
+ require_relative '../command'
4
4
  require_relative '../../app/complete'
5
5
 
6
6
  class Trepan::Command::WatchgCommand < Trepan::Command
@@ -4,7 +4,7 @@
4
4
  # Note: don't end classname with Command (capital C) since main
5
5
  # will think this a command name like QuitCommand
6
6
  require 'columnize'
7
- require_relative '../../../app/complete'
7
+ require_relative '../app/complete'
8
8
 
9
9
  class Trepan
10
10
  class Command
@@ -55,11 +55,12 @@ class Trepan
55
55
  obj.class.const_get(name)
56
56
  end
57
57
 
58
+ # Convenience short-hand for @proc.msg
58
59
  def msg(message, opts={})
59
60
  @proc.msg(message, opts)
60
61
  end
61
62
 
62
- # Convenience short-hand for @dbgr.intf[-1].msg_nocr
63
+ # Convenience short-hand for @proc.msg_nocr
63
64
  def msg_nocr(msg, opts={})
64
65
  @proc.msg_nocr(msg, opts)
65
66
  end
data/processor/display.rb CHANGED
@@ -9,6 +9,40 @@ class Trepan
9
9
  @displays = DisplayMgr.new
10
10
  end
11
11
 
12
+ def display_find(num, show_errmsg = true)
13
+ if 0 == @displays.size
14
+ errmsg('No display expressions set.') if show_errmsg
15
+ return nil
16
+ elsif num > @displays.max || num < 1
17
+ errmsg('Display number %d is out of range 1..%d' %
18
+ [num, @displays.max]) if show_errmsg
19
+ return nil
20
+ end
21
+ disp = @displays[num]
22
+ if disp
23
+ return disp
24
+ else
25
+ errmsg('Display number %d previously deleted.' %
26
+ num) if show_errmsg
27
+ return nil
28
+ end
29
+ end
30
+
31
+ # Enable or disable a breakpoint given its breakpoint number.
32
+ def en_disable_display_by_number(num, do_enable=true)
33
+ disp = display_find(num)
34
+ return false unless disp
35
+
36
+ enable_disable = do_enable ? 'en' : 'dis'
37
+ if disp.enabled? == do_enable
38
+ errmsg('Display %d previously %sabled.' %
39
+ [num, enable_disable])
40
+ return false
41
+ end
42
+ disp.enabled = do_enable
43
+ return true
44
+ end
45
+
12
46
  def run_eval_display(args={})
13
47
  for line in @displays.display(@frame) do
14
48
  msg(line)
data/processor/frame.rb CHANGED
@@ -217,8 +217,8 @@ if __FILE__ == $0
217
217
  # Demo it.
218
218
  require 'thread_frame'
219
219
  require_relative '../app/mock'
220
- require_relative 'main' # Have to include before defining CmdProcessor!
221
- # FIXME
220
+
221
+
222
222
  class Trepan::CmdProcessor
223
223
  def errmsg(msg)
224
224
  puts msg
data/processor/help.rb CHANGED
@@ -1,4 +1,5 @@
1
- # Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
1
+ # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
2
+
2
3
  class Trepan
3
4
  # class SubHelp
4
5
  # def initialize(name, dir)
@@ -48,7 +49,7 @@ class Trepan
48
49
  # like "show", "info" or "set". Generally this means list
49
50
  # all of the subcommands.
50
51
  def summary_list(name, subcmds)
51
- msg "List of #{name} commands (with minimum abbreviation in parenthesis):"
52
+ section "List of #{name} commands (with minimum abbreviation in parenthesis):"
52
53
  subcmds.list.each do |subcmd_name|
53
54
  # Some commands have lots of output.
54
55
  # they are excluded here because 'in_list' is false.
@@ -59,8 +60,9 @@ class Trepan
59
60
 
60
61
  # Error message when subcommand asked for but doesn't exist
61
62
  def undefined_subcmd(cmd, subcmd)
62
- errmsg(('Undefined "%s" subcommand: "%s". ' +
63
- 'Try "help %s *".') % [cmd, subcmd, cmd])
63
+ ambig = settings[:abbrev] ? 'or ambiguous ' : ''
64
+ errmsg(['Undefined %s"%s" subcommand: "%s". ' % [ambig, cmd, subcmd],
65
+ 'Try "help %s *".' % cmd])
64
66
  end
65
67
 
66
68
  end