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.
- data/ChangeLog +465 -0
- data/NEWS +26 -1
- data/README.textile +1 -1
- data/app/cmd_parse.kpeg +2 -1
- data/app/cmd_parser.rb +30 -3
- data/app/core.rb +1 -1
- data/app/display.rb +39 -1
- data/app/frame.rb +1 -1
- data/app/irb.rb +42 -40
- data/app/options.rb +3 -2
- data/app/run.rb +21 -7
- data/app/util.rb +12 -2
- data/app/yarv.rb +0 -2
- data/bin/trepan +2 -3
- data/data/perldb.bindings +17 -0
- data/interface/script.rb +1 -1
- data/interface/server.rb +1 -1
- data/interface/user.rb +3 -1
- data/{interface/base_intf.rb → interface.rb} +1 -1
- data/io/input.rb +1 -3
- data/io/null_output.rb +1 -1
- data/io/string_array.rb +1 -2
- data/io/tcpclient.rb +1 -1
- data/io/tcpserver.rb +1 -1
- data/{io/base_io.rb → io.rb} +0 -0
- data/lib/trepanning.rb +2 -1
- data/processor/command/alias.rb +15 -4
- data/processor/command/backtrace.rb +2 -2
- data/processor/command/base/subcmd.rb +1 -5
- data/processor/command/base/submgr.rb +1 -1
- data/processor/command/base/subsubcmd.rb +1 -1
- data/processor/command/base/subsubmgr.rb +4 -4
- data/processor/command/break.rb +1 -1
- data/processor/command/complete.rb +1 -1
- data/processor/command/condition.rb +2 -2
- data/processor/command/continue.rb +1 -1
- data/processor/command/debug.rb +1 -1
- data/processor/command/delete.rb +10 -7
- data/processor/command/directory.rb +1 -1
- data/processor/command/disable.rb +25 -19
- data/processor/command/disassemble.rb +1 -1
- data/processor/command/display.rb +35 -28
- data/processor/command/down.rb +8 -8
- data/processor/command/edit.rb +1 -1
- data/processor/command/enable.rb +10 -12
- data/processor/command/eval.rb +1 -1
- data/processor/command/exit.rb +1 -1
- data/processor/command/finish.rb +1 -1
- data/processor/command/frame.rb +2 -2
- data/processor/command/help.rb +6 -8
- data/processor/command/info.rb +2 -0
- data/processor/command/info_subcmd/files.rb +17 -11
- data/processor/command/info_subcmd/frame.rb +0 -1
- data/processor/command/info_subcmd/locals.rb +6 -73
- data/processor/command/info_subcmd/source.rb +10 -4
- data/processor/command/info_subcmd/variables.rb +34 -0
- data/processor/command/info_subcmd/variables_subcmd/.gitignore +1 -0
- data/processor/command/info_subcmd/variables_subcmd/class.rb +40 -0
- data/processor/command/info_subcmd/variables_subcmd/constant.rb +41 -0
- data/processor/command/info_subcmd/{globals.rb → variables_subcmd/globals.rb} +21 -16
- data/processor/command/info_subcmd/variables_subcmd/instance.rb +41 -0
- data/processor/command/info_subcmd/variables_subcmd/locals.rb +99 -0
- data/processor/command/kill.rb +9 -8
- data/processor/command/list.rb +9 -107
- data/processor/command/macro.rb +27 -9
- data/processor/command/next.rb +1 -1
- data/processor/command/nocache.rb +2 -2
- data/processor/command/parsetree.rb +1 -1
- data/processor/command/pp.rb +1 -1
- data/processor/command/pr.rb +1 -1
- data/processor/command/ps.rb +1 -1
- data/processor/command/quit.rb +18 -7
- data/processor/command/raise.rb +1 -1
- data/processor/command/reload.rb +10 -10
- data/processor/command/restart.rb +1 -1
- data/processor/command/save.rb +1 -1
- data/processor/command/server.rb +1 -1
- data/processor/command/set_subcmd/auto.rb +7 -1
- data/processor/command/set_subcmd/different.rb +5 -4
- data/processor/command/set_subcmd/substitute_subcmd/eval.rb +2 -2
- data/processor/command/set_subcmd/trace.rb +5 -4
- data/processor/command/set_subcmd/trace_subcmd/print.rb +4 -3
- data/processor/command/shell.rb +5 -3
- data/processor/command/show_subcmd/{alias.rb → aliases.rb} +2 -2
- data/processor/command/show_subcmd/auto_subcmd/eval.rb +2 -7
- data/processor/command/show_subcmd/trace_subcmd/print.rb +3 -3
- data/processor/command/show_subcmd/version.rb +24 -0
- data/processor/command/source.rb +1 -1
- data/processor/command/step.rb +1 -1
- data/processor/command/tbreak.rb +1 -1
- data/processor/command/unalias.rb +11 -6
- data/processor/command/undisplay.rb +14 -10
- data/processor/command/up.rb +12 -13
- data/processor/command/watchg.rb +1 -1
- data/processor/{command/base/cmd.rb → command.rb} +3 -2
- data/processor/display.rb +34 -0
- data/processor/frame.rb +2 -2
- data/processor/help.rb +6 -4
- data/processor/hook.rb +95 -96
- data/processor/list.rb +146 -0
- data/processor/location.rb +26 -0
- data/processor/mock.rb +4 -7
- data/processor/msg.rb +54 -42
- data/processor/running.rb +6 -3
- data/processor/subcmd.rb +16 -41
- data/processor/validate.rb +6 -9
- data/{processor/main.rb → processor.rb} +11 -40
- data/sample/rocky-trepan-colors.rb +0 -1
- data/test/data/enable.cmd +1 -1
- data/test/data/trace.cmd +6 -0
- data/test/data/trace.right +39 -0
- data/test/example/gcd.rb +0 -1
- data/test/functional/test-next.rb +1 -1
- data/test/integration/helper.rb +4 -0
- data/test/integration/test-trace.rb +18 -0
- data/test/unit/cmd-helper.rb +4 -4
- data/test/unit/test-app-cmd_parse.rb +1 -1
- data/test/unit/test-app-display.rb +22 -0
- data/test/unit/test-app-options.rb +14 -10
- data/test/unit/test-app-run.rb +7 -1
- data/test/unit/test-base-subcmd.rb +1 -1
- data/test/unit/test-cmd-kill.rb +11 -4
- data/test/unit/test-cmd-parse_list_cmd.rb +1 -1
- data/test/unit/{test-base-cmd.rb → test-command.rb} +1 -1
- data/test/unit/test-proc-eval.rb +1 -2
- data/test/unit/test-proc-frame.rb +1 -2
- data/test/unit/test-proc-list.rb +52 -0
- data/test/unit/test-proc-load_cmds.rb +1 -1
- data/test/unit/test-proc-location.rb +11 -4
- data/test/unit/test-proc-main.rb +1 -1
- data/test/unit/test-proc-validate.rb +1 -2
- data/test/unit/test-subcmd-help.rb +1 -1
- data/trepanning.gemspec +1 -1
- 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 =
|
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
|
-
|
8
|
+
HELP = <<-EOH
|
9
|
+
#{PREFIX.join(' ')} [on|off|nostack]
|
10
10
|
|
11
|
-
Set to make sure 'next
|
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
|
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 =
|
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
|
15
|
-
|
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
|
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)
|
data/processor/command/shell.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
2
2
|
require 'irb'
|
3
|
-
require_relative '
|
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
|
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::
|
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
|
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 = "
|
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
|
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
|
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
|
data/processor/command/source.rb
CHANGED
data/processor/command/step.rb
CHANGED
data/processor/command/tbreak.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
|
-
# Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
|
2
|
-
require_relative '
|
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
|
-
|
8
|
+
HELP = <<-HELP
|
9
|
+
unalias ALIAS
|
9
10
|
|
10
|
-
Remove alias
|
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 '
|
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
|
-
|
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
|
-
|
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
|
-
|
29
|
-
|
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
|
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("
|
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
|
data/processor/command/up.rb
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
2
|
-
require_relative '
|
2
|
+
require_relative '../command'
|
3
|
+
require_relative '../../app/util'
|
3
4
|
|
4
|
-
# up command. Like 'down'
|
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
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
data/processor/command/watchg.rb
CHANGED
@@ -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 '
|
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 @
|
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
|
-
|
221
|
-
|
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
|
-
|
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
|
-
|
63
|
-
|
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
|