rb8-trepanning 0.1.3
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/.gitignore +3 -0
- data/CHANGES +34 -0
- data/ChangeLog +875 -0
- data/README.textile +59 -0
- data/Rakefile +215 -0
- data/app/.gitignore +1 -0
- data/app/cmd_parse.kpeg +241 -0
- data/app/cmd_parse.rb +212 -0
- data/app/cmd_parser.rb +1948 -0
- data/app/complete.rb +79 -0
- data/app/default.rb +90 -0
- data/app/display.rb +148 -0
- data/app/eventbuffer.rb +147 -0
- data/app/frame.rb +166 -0
- data/app/irb.rb +114 -0
- data/app/options.rb +200 -0
- data/app/run.rb +74 -0
- data/app/util.rb +65 -0
- data/bin/.gitignore +1 -0
- data/bin/trepan8 +115 -0
- data/data/.gitignore +1 -0
- data/data/irbrc +41 -0
- data/interface/.gitignore +1 -0
- data/interface/base_intf.rb +109 -0
- data/interface/client.rb +82 -0
- data/interface/comcodes.rb +20 -0
- data/interface/script.rb +110 -0
- data/interface/server.rb +147 -0
- data/interface/user.rb +165 -0
- data/io/base_io.rb +148 -0
- data/io/input.rb +158 -0
- data/io/null_output.rb +46 -0
- data/io/string_array.rb +156 -0
- data/io/tcpclient.rb +129 -0
- data/io/tcpfns.rb +33 -0
- data/io/tcpserver.rb +141 -0
- data/lib/debugger.rb +8 -0
- data/lib/trepanning.rb +283 -0
- data/processor/.gitignore +1 -0
- data/processor/command-ruby-debug/breakpoints.rb +155 -0
- data/processor/command-ruby-debug/catchpoint.rb +55 -0
- data/processor/command-ruby-debug/condition.rb +49 -0
- data/processor/command-ruby-debug/control.rb +31 -0
- data/processor/command-ruby-debug/display.rb +120 -0
- data/processor/command-ruby-debug/enable.rb +202 -0
- data/processor/command-ruby-debug/frame.rb +199 -0
- data/processor/command-ruby-debug/help.rb +63 -0
- data/processor/command-ruby-debug/info.rb +359 -0
- data/processor/command-ruby-debug/method.rb +84 -0
- data/processor/command-ruby-debug/reload.rb +40 -0
- data/processor/command-ruby-debug/save.rb +90 -0
- data/processor/command-ruby-debug/set.rb +237 -0
- data/processor/command-ruby-debug/show.rb +251 -0
- data/processor/command-ruby-debug/source.rb +36 -0
- data/processor/command-ruby-debug/threads.rb +189 -0
- data/processor/command-ruby-debug/trace.rb +57 -0
- data/processor/command-ruby-debug/variables.rb +199 -0
- data/processor/command.rb +270 -0
- data/processor/command/.gitignore +1 -0
- data/processor/command/alias.rb +54 -0
- data/processor/command/backtrace.rb +123 -0
- data/processor/command/base/cmd.rb +177 -0
- data/processor/command/base/subcmd.rb +230 -0
- data/processor/command/base/submgr.rb +188 -0
- data/processor/command/base/subsubcmd.rb +128 -0
- data/processor/command/base/subsubmgr.rb +199 -0
- data/processor/command/break.rb +114 -0
- data/processor/command/catch.rb +71 -0
- data/processor/command/complete.rb +39 -0
- data/processor/command/continue.rb +57 -0
- data/processor/command/directory.rb +50 -0
- data/processor/command/disable.rb +85 -0
- data/processor/command/display.rb +78 -0
- data/processor/command/down.rb +54 -0
- data/processor/command/edit.rb +79 -0
- data/processor/command/enable.rb +48 -0
- data/processor/command/eval.rb +90 -0
- data/processor/command/exit.rb +66 -0
- data/processor/command/finish.rb +59 -0
- data/processor/command/frame.rb +97 -0
- data/processor/command/help.rb +230 -0
- data/processor/command/help/.gitignore +1 -0
- data/processor/command/help/README +10 -0
- data/processor/command/help/command.txt +58 -0
- data/processor/command/help/examples.txt +16 -0
- data/processor/command/help/filename.txt +40 -0
- data/processor/command/help/location.txt +37 -0
- data/processor/command/help/suffixes.txt +17 -0
- data/processor/command/info.rb +28 -0
- data/processor/command/info_subcmd/.gitignore +1 -0
- data/processor/command/info_subcmd/args.rb +39 -0
- data/processor/command/info_subcmd/breakpoints.rb +80 -0
- data/processor/command/info_subcmd/catch.rb +36 -0
- data/processor/command/info_subcmd/files.rb +39 -0
- data/processor/command/info_subcmd/globals.rb +64 -0
- data/processor/command/info_subcmd/line.rb +30 -0
- data/processor/command/info_subcmd/locals.rb +69 -0
- data/processor/command/info_subcmd/macro.rb +62 -0
- data/processor/command/info_subcmd/program.rb +51 -0
- data/processor/command/info_subcmd/ruby.rb +57 -0
- data/processor/command/info_subcmd/source.rb +74 -0
- data/processor/command/info_subcmd/stack.rb +25 -0
- data/processor/command/info_subcmd/threads.rb +75 -0
- data/processor/command/kill.rb +78 -0
- data/processor/command/list.rb +117 -0
- data/processor/command/macro.rb +68 -0
- data/processor/command/next.rb +79 -0
- data/processor/command/parsetree.rb +56 -0
- data/processor/command/pp.rb +40 -0
- data/processor/command/pr.rb +37 -0
- data/processor/command/ps.rb +40 -0
- data/processor/command/restart.rb +86 -0
- data/processor/command/save.rb +58 -0
- data/processor/command/set.rb +47 -0
- data/processor/command/set_subcmd/.gitignore +1 -0
- data/processor/command/set_subcmd/abbrev.rb +25 -0
- data/processor/command/set_subcmd/auto.rb +27 -0
- data/processor/command/set_subcmd/auto_subcmd/.gitignore +1 -0
- data/processor/command/set_subcmd/auto_subcmd/eval.rb +53 -0
- data/processor/command/set_subcmd/auto_subcmd/irb.rb +33 -0
- data/processor/command/set_subcmd/auto_subcmd/list.rb +33 -0
- data/processor/command/set_subcmd/basename.rb +25 -0
- data/processor/command/set_subcmd/callstyle.rb +46 -0
- data/processor/command/set_subcmd/confirm.rb +24 -0
- data/processor/command/set_subcmd/debug.rb +47 -0
- data/processor/command/set_subcmd/different.rb +61 -0
- data/processor/command/set_subcmd/highlight.rb +43 -0
- data/processor/command/set_subcmd/max.rb +26 -0
- data/processor/command/set_subcmd/max_subcmd/list.rb +49 -0
- data/processor/command/set_subcmd/max_subcmd/stack.rb +50 -0
- data/processor/command/set_subcmd/max_subcmd/string.rb +76 -0
- data/processor/command/set_subcmd/max_subcmd/width.rb +49 -0
- data/processor/command/set_subcmd/reload.rb +42 -0
- data/processor/command/set_subcmd/timer.rb +58 -0
- data/processor/command/set_subcmd/trace.rb +37 -0
- data/processor/command/set_subcmd/trace_subcmd/buffer.rb +42 -0
- data/processor/command/set_subcmd/trace_subcmd/print.rb +41 -0
- data/processor/command/shell.rb +139 -0
- data/processor/command/show.rb +39 -0
- data/processor/command/show_subcmd/.gitignore +1 -0
- data/processor/command/show_subcmd/abbrev.rb +20 -0
- data/processor/command/show_subcmd/alias.rb +46 -0
- data/processor/command/show_subcmd/args.rb +34 -0
- data/processor/command/show_subcmd/auto.rb +28 -0
- data/processor/command/show_subcmd/auto_subcmd/eval.rb +27 -0
- data/processor/command/show_subcmd/auto_subcmd/irb.rb +23 -0
- data/processor/command/show_subcmd/auto_subcmd/list.rb +22 -0
- data/processor/command/show_subcmd/basename.rb +20 -0
- data/processor/command/show_subcmd/callstyle.rb +22 -0
- data/processor/command/show_subcmd/confirm.rb +18 -0
- data/processor/command/show_subcmd/debug.rb +26 -0
- data/processor/command/show_subcmd/debug_subcmd/dbgr.rb +21 -0
- data/processor/command/show_subcmd/debug_subcmd/skip.rb +22 -0
- data/processor/command/show_subcmd/debug_subcmd/step.rb +22 -0
- data/processor/command/show_subcmd/different.rb +26 -0
- data/processor/command/show_subcmd/directories.rb +22 -0
- data/processor/command/show_subcmd/highlight.rb +24 -0
- data/processor/command/show_subcmd/max.rb +27 -0
- data/processor/command/show_subcmd/max_subcmd/list.rb +38 -0
- data/processor/command/show_subcmd/max_subcmd/stack.rb +36 -0
- data/processor/command/show_subcmd/max_subcmd/string.rb +42 -0
- data/processor/command/show_subcmd/max_subcmd/width.rb +37 -0
- data/processor/command/show_subcmd/reload.rb +18 -0
- data/processor/command/show_subcmd/timer.rb +18 -0
- data/processor/command/show_subcmd/trace.rb +29 -0
- data/processor/command/show_subcmd/trace_subcmd/buffer.rb +65 -0
- data/processor/command/show_subcmd/trace_subcmd/print.rb +23 -0
- data/processor/command/show_subcmd/version.rb +23 -0
- data/processor/command/source.rb +134 -0
- data/processor/command/step.rb +81 -0
- data/processor/command/tbreak.rb +19 -0
- data/processor/command/unalias.rb +44 -0
- data/processor/command/undisplay.rb +59 -0
- data/processor/command/up.rb +72 -0
- data/processor/default.rb +56 -0
- data/processor/display.rb +17 -0
- data/processor/eval.rb +113 -0
- data/processor/eventbuf.rb +105 -0
- data/processor/frame.rb +172 -0
- data/processor/help.rb +92 -0
- data/processor/helper.rb +76 -0
- data/processor/hook.rb +134 -0
- data/processor/load_cmds.rb +258 -0
- data/processor/location.rb +174 -0
- data/processor/main.rb +455 -0
- data/processor/mock.rb +136 -0
- data/processor/msg.rb +61 -0
- data/processor/processor.rb +674 -0
- data/processor/running.rb +168 -0
- data/processor/stepping.rb +18 -0
- data/processor/subcmd.rb +161 -0
- data/processor/validate.rb +355 -0
- data/processor/virtual.rb +34 -0
- data/test/data/.gitignore +1 -0
- data/test/data/break_bad.cmd +19 -0
- data/test/data/break_bad.right +29 -0
- data/test/data/break_loop_bug.cmd +5 -0
- data/test/data/break_loop_bug.right +15 -0
- data/test/data/dollar-0.right +2 -0
- data/test/data/dollar-0a.right +2 -0
- data/test/data/dollar-0b.right +2 -0
- data/test/data/edit.cmd +14 -0
- data/test/data/edit.right +24 -0
- data/test/data/file-with-space.cmd +6 -0
- data/test/data/file-with-space.right +4 -0
- data/test/data/printvar.cmd +17 -0
- data/test/data/printvar.right +31 -0
- data/test/data/raise.cmd +11 -0
- data/test/data/raise.right +19 -0
- data/test/data/source.cmd +5 -0
- data/test/data/source.right +18 -0
- data/test/data/stepping-1.9.right +50 -0
- data/test/data/stepping.cmd +21 -0
- data/test/data/stepping.right +48 -0
- data/test/data/trepan8-save.1 +6 -0
- data/test/example/bp_loop_issue.rb +3 -0
- data/test/example/break-bug.rb +7 -0
- data/test/example/brkpt-class-bug.rb +8 -0
- data/test/example/classes.rb +11 -0
- data/test/example/dollar-0.rb +5 -0
- data/test/example/except-bug1.rb +4 -0
- data/test/example/except-bug2.rb +7 -0
- data/test/example/file with space.rb +1 -0
- data/test/example/gcd.rb +18 -0
- data/test/example/info-var-bug.rb +47 -0
- data/test/example/info-var-bug2.rb +2 -0
- data/test/example/null.rb +1 -0
- data/test/example/pm-bug.rb +3 -0
- data/test/example/pm.rb +11 -0
- data/test/example/raise.rb +3 -0
- data/test/integration/.gitignore +4 -0
- data/test/integration/config.yaml +8 -0
- data/test/integration/helper.rb +154 -0
- data/test/integration/test-break_bad.rb +26 -0
- data/test/integration/test-dollar-0.rb +31 -0
- data/test/integration/test-edit.rb +17 -0
- data/test/integration/test-file-with-space.rb +26 -0
- data/test/integration/test-printvar.rb +17 -0
- data/test/integration/test-raise.rb +21 -0
- data/test/integration/test-source.rb +16 -0
- data/test/integration/test-stepping.rb +24 -0
- data/test/unit/.gitignore +1 -0
- data/test/unit/cmd-helper.rb +52 -0
- data/test/unit/mock-helper.rb +12 -0
- data/test/unit/test-app-cmd_parse.rb +97 -0
- data/test/unit/test-app-cmd_parser.rb +23 -0
- data/test/unit/test-app-complete.rb +39 -0
- data/test/unit/test-app-frame.rb +32 -0
- data/test/unit/test-app-options.rb +92 -0
- data/test/unit/test-app-run.rb +14 -0
- data/test/unit/test-app-util.rb +44 -0
- data/test/unit/test-base-cmd.rb +45 -0
- data/test/unit/test-base-subcmd.rb +57 -0
- data/test/unit/test-base-submgr.rb +23 -0
- data/test/unit/test-base-subsubcmd.rb +17 -0
- data/test/unit/test-cmd-alias.rb +48 -0
- data/test/unit/test-cmd-exit.rb +27 -0
- data/test/unit/test-cmd-help.rb +104 -0
- data/test/unit/test-cmd-kill.rb +46 -0
- data/test/unit/test-cmd-source.rb +34 -0
- data/test/unit/test-completion.rb +42 -0
- data/test/unit/test-intf-user.rb +46 -0
- data/test/unit/test-io-input.rb +27 -0
- data/test/unit/test-io-tcp.rb +33 -0
- data/test/unit/test-io-tcpclient.rb +54 -0
- data/test/unit/test-io-tcpfns.rb +17 -0
- data/test/unit/test-io-tcpserver.rb +50 -0
- data/test/unit/test-proc-eval.rb +36 -0
- data/test/unit/test-proc-hook.rb +30 -0
- data/test/unit/test-proc-load_cmds.rb +50 -0
- data/test/unit/test-proc-location.rb +79 -0
- data/test/unit/test-subcmd-help.rb +44 -0
- data/trepan8.gemspec +52 -0
- metadata +391 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*~
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetAbbrev < Trepan::SetBoolSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
HELP = "Set to allow unique abbreviations of commands"
|
|
9
|
+
IN_LIST = true
|
|
10
|
+
MIN_ABBREV = 'ab'.size
|
|
11
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
if __FILE__ == $0
|
|
17
|
+
# Demo it.
|
|
18
|
+
$0 = __FILE__ + 'notagain' # So we don't run this again
|
|
19
|
+
require_relative '../../mock'
|
|
20
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetAbbrev, false)
|
|
21
|
+
cmd.run(cmd.prefix + ['off'])
|
|
22
|
+
cmd.run(cmd.prefix + ['ofn'])
|
|
23
|
+
cmd.run(cmd.prefix)
|
|
24
|
+
puts cmd.save_command
|
|
25
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subsubcmd'
|
|
5
|
+
require_relative '../base/subsubmgr'
|
|
6
|
+
|
|
7
|
+
class Trepan::SubSubcommand::SetAuto < Trepan::SubSubcommandMgr
|
|
8
|
+
unless defined?(HELP)
|
|
9
|
+
HELP = 'Set controls for things with some sort of "automatic" default behavior'
|
|
10
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
if __FILE__ == $0
|
|
15
|
+
require_relative '../../mock'
|
|
16
|
+
dbgr, cmd = MockDebugger::setup('set')
|
|
17
|
+
# cmds = dbgr.core.processor.commands
|
|
18
|
+
# set_cmd = cmds['set']
|
|
19
|
+
# command = Trepan::SubSubcommand::SetAuto.new(dbgr.core.processor,
|
|
20
|
+
# set_cmd)
|
|
21
|
+
# name = File.basename(__FILE__, '.rb')
|
|
22
|
+
# cmd_args = ['set', name]
|
|
23
|
+
# set_cmd.instance_variable_set('@last_args', cmd_args)
|
|
24
|
+
# # require_relative '../../../lib/trepanning'
|
|
25
|
+
# # Trepan.debug(:set_restart => true)
|
|
26
|
+
# command.run(cmd_args)
|
|
27
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*~
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../../base/subsubcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::SubSubcommand::SetAutoEval < Trepan::SetBoolSubSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
HELP = "Evaluate unrecognized debugger commands.
|
|
10
|
+
|
|
11
|
+
Often inside the debugger, one would like to be able to run arbitrary
|
|
12
|
+
Ruby commands without having to preface Python expressions with \"print\" or
|
|
13
|
+
\"eval\". Setting \"auto eval\" on will cause unrecognized debugger
|
|
14
|
+
commands to be eval'd as a Ruby expression.
|
|
15
|
+
|
|
16
|
+
Note that if this is set, on error the message shown on type a bad
|
|
17
|
+
debugger command changes from:
|
|
18
|
+
|
|
19
|
+
Undefined command: \"fdafds\". Try \"help\".
|
|
20
|
+
|
|
21
|
+
to something more Ruby-eval-specific such as:
|
|
22
|
+
|
|
23
|
+
NameError: name 'fdafds' is not defined
|
|
24
|
+
|
|
25
|
+
One other thing that trips people up is when setting auto eval is that
|
|
26
|
+
there are some short debugger commands that sometimes one wants to use
|
|
27
|
+
as a variable, such as in an assignment statement. For example:
|
|
28
|
+
|
|
29
|
+
s = 5
|
|
30
|
+
|
|
31
|
+
which produce when 'auto eval' is on:
|
|
32
|
+
*** Command 'step' can take at most 1 argument(s); got 2.
|
|
33
|
+
|
|
34
|
+
because by default, 's' is an alias for the debugger 'step'
|
|
35
|
+
command. It is possible to remove that alias if this causes constant
|
|
36
|
+
problem. Another possibility is to go into a real Ruby shell via the
|
|
37
|
+
'irb' command.
|
|
38
|
+
"
|
|
39
|
+
MIN_ABBREV = 'ev'.size
|
|
40
|
+
SHORT_HELP = "Set evaluation of unrecognized debugger commands"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
if __FILE__ == $0
|
|
46
|
+
# Demo it.
|
|
47
|
+
require_relative '../../../mock'
|
|
48
|
+
require_relative '../auto'
|
|
49
|
+
|
|
50
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetAuto,
|
|
51
|
+
Trepan::SubSubcommand::SetAutoEval)
|
|
52
|
+
cmd.run([cmd.name, 'off'])
|
|
53
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../../base/subsubcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetAutoIrb < Trepan::SetBoolSubSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
HELP = "Set to automatically go into irb each time we enter the debugger"
|
|
10
|
+
MIN_ABBREV = 'ir'.size
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def run(args)
|
|
14
|
+
super
|
|
15
|
+
if @proc.settings[:autoirb]
|
|
16
|
+
@proc.cmdloop_prehooks.insert_if_new(-1, *@proc.autoirb_hook)
|
|
17
|
+
else
|
|
18
|
+
@proc.cmdloop_prehooks.delete_by_name('autoirb')
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
if __FILE__ == $0
|
|
25
|
+
# Demo it.
|
|
26
|
+
require_relative '../../../mock'
|
|
27
|
+
require_relative '../auto'
|
|
28
|
+
|
|
29
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetAuto,
|
|
30
|
+
Trepan::SubSubcommand::SetAutoIrb)
|
|
31
|
+
cmd.run([cmd.name, 'off'])
|
|
32
|
+
cmd.run([cmd.name, 'on'])
|
|
33
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../../base/subsubcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetAutoList < Trepan::SetBoolSubSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
HELP = "Set to run a 'list' command each time we enter the debugger"
|
|
10
|
+
MIN_ABBREV = 'l'.size
|
|
11
|
+
SHORT_HELP = "Set running a 'list' command each time we enter the debugger"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def run(args)
|
|
15
|
+
super
|
|
16
|
+
if @proc.settings[:autolist]
|
|
17
|
+
@proc.cmdloop_prehooks.insert_if_new(10, *@proc.autolist_hook)
|
|
18
|
+
else
|
|
19
|
+
@proc.cmdloop_prehooks.delete_by_name('autolist')
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if __FILE__ == $0
|
|
26
|
+
# Demo it.
|
|
27
|
+
require_relative '../../../mock'
|
|
28
|
+
require_relative '../auto'
|
|
29
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetAuto,
|
|
30
|
+
Trepan::SubSubcommand::SetAutoList)
|
|
31
|
+
cmd.run([cmd.name, 'off'])
|
|
32
|
+
cmd.run([cmd.name, 'on'])
|
|
33
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetBasename < Trepan::SetBoolSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
HELP = "Set to show only file basename in showing file names"
|
|
9
|
+
IN_LIST = true
|
|
10
|
+
MIN_ABBREV = 'ba'.size
|
|
11
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
if __FILE__ == $0
|
|
17
|
+
# Demo it.
|
|
18
|
+
$0 = __FILE__ + 'notagain' # So we don't run this again
|
|
19
|
+
require_relative '../../mock'
|
|
20
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetBasename, false)
|
|
21
|
+
cmd.run(cmd.prefix + ['off'])
|
|
22
|
+
cmd.run(cmd.prefix + ['ofn'])
|
|
23
|
+
cmd.run(cmd.prefix)
|
|
24
|
+
puts cmd.save_command
|
|
25
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetCallstyle < Trepan::Subcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
MIN_ABBREV = 'call'.size
|
|
10
|
+
MAX_ARGS = 1
|
|
11
|
+
SHORT_HELP = 'Set how you want call parameters displayed'
|
|
12
|
+
HELP = <<-EOH
|
|
13
|
+
#{CMD} {short|last|tracked}
|
|
14
|
+
|
|
15
|
+
Set how you want call parameters displayed in a backtrace.
|
|
16
|
+
EOH
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def complete(prefix)
|
|
20
|
+
Trepan::Complete.complete_token(%w(short last tracked), prefix)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def run(args)
|
|
24
|
+
arg = args[2].downcase.to_sym
|
|
25
|
+
case arg
|
|
26
|
+
when :short, :last, :tracked
|
|
27
|
+
settings[:callstyle] = arg
|
|
28
|
+
Debugger.track_frame_args = (arg == :tracked) ? true : false
|
|
29
|
+
@proc.commands['show'].run(%w(show callstyle))
|
|
30
|
+
return
|
|
31
|
+
else
|
|
32
|
+
errmsg "Invalid call style #{arg}. Should be one of: " +
|
|
33
|
+
"'short', 'last', or 'tracked'."
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
if __FILE__ == $0
|
|
39
|
+
# Demo it.
|
|
40
|
+
$0 = __FILE__ + 'notagain' # So we don't run this again
|
|
41
|
+
require_relative '../../mock'
|
|
42
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetCallstyle, false)
|
|
43
|
+
%w(short last tracked).each do |arg|
|
|
44
|
+
cmd.run(cmd.prefix + [arg])
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetConfirm < Trepan::SetBoolSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
HELP = "Set whether to confirm potentially dangerous operations."
|
|
10
|
+
IN_LIST = true
|
|
11
|
+
MIN_ABBREV = 'co'.size
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
if __FILE__ == $0
|
|
16
|
+
# Demo it.
|
|
17
|
+
$0 = __FILE__ + 'notagain' # So we don't run this agin
|
|
18
|
+
require_relative '../../mock'
|
|
19
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetConfirm, false)
|
|
20
|
+
cmd.run(cmd.prefix + ['off'])
|
|
21
|
+
cmd.run(cmd.prefix + ['ofn'])
|
|
22
|
+
cmd.run(cmd.prefix)
|
|
23
|
+
puts cmd.save_command
|
|
24
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subcmd'
|
|
5
|
+
require_relative '../../../interface/script'
|
|
6
|
+
|
|
7
|
+
class Trepan::Subcommand::SetDebug < Trepan::SetBoolSubcommand
|
|
8
|
+
unless defined?(HELP)
|
|
9
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
10
|
+
HELP = <<-EOH
|
|
11
|
+
#{PREFIX.join(' ')} [on|off|testing]
|
|
12
|
+
EOH
|
|
13
|
+
|
|
14
|
+
IN_LIST = true
|
|
15
|
+
MIN_ABBREV = 'deb'.size
|
|
16
|
+
SHORT_HELP = "Set debugger testing."
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
completion %w(on off testing)
|
|
20
|
+
|
|
21
|
+
def run(args)
|
|
22
|
+
if args.size == 3 && 'testing' == args[2]
|
|
23
|
+
@proc.settings[:debuggertesting] = true
|
|
24
|
+
@proc.settings[:basename] = true
|
|
25
|
+
intf = @proc.intf
|
|
26
|
+
if intf.kind_of?(Trepan::ScriptInterface)
|
|
27
|
+
intf.opts[:verbose] = true
|
|
28
|
+
intf.opts[:basename] = true
|
|
29
|
+
intf.output = STDOUT
|
|
30
|
+
intf.opts[:abort_on_error] = false
|
|
31
|
+
end
|
|
32
|
+
msg("debugger testing is on.")
|
|
33
|
+
else
|
|
34
|
+
super
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
if __FILE__ == $0
|
|
41
|
+
# Demo it.
|
|
42
|
+
require_relative '../../mock'
|
|
43
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetDebug)
|
|
44
|
+
cmd.run(cmd.prefix + ['off'])
|
|
45
|
+
cmd.run(cmd.prefix + ['testing'])
|
|
46
|
+
puts cmd.save_command
|
|
47
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetDifferent < Trepan::SetBoolSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
SHORT_HELP = "Make sure 'next/step' moves to a new line number"
|
|
10
|
+
HELP = <<-EOH
|
|
11
|
+
#{PREFIX.join(' ')} [on|off|nostack]
|
|
12
|
+
|
|
13
|
+
Make sure 'next/step' moves to a new line number.
|
|
14
|
+
|
|
15
|
+
Due to the interpretive, expression-oriented nature of the Ruby
|
|
16
|
+
Language and implementation, each line often may contain many possible
|
|
17
|
+
stopping points with possibly different event type. In a debugger it
|
|
18
|
+
is sometimes desirable to continue but stop only when the position
|
|
19
|
+
next changes.
|
|
20
|
+
|
|
21
|
+
Setting 'different' to on will cause each 'step' or 'next' command to
|
|
22
|
+
stop at a different position.
|
|
23
|
+
|
|
24
|
+
Note though that the notion of different does take into account stack
|
|
25
|
+
nesting. So in ARGV.map {|arg| arg.to_i} you get a stop before ARGV as
|
|
26
|
+
well as one in the block.
|
|
27
|
+
|
|
28
|
+
If you to ignore stopping at added nesting levels, there are two
|
|
29
|
+
possibilities. 'set step nostack' will ignore stack nestings levels on
|
|
30
|
+
a given line. Also you can use 'next', but that also stepping into
|
|
31
|
+
functions on different lines to also be skipped.
|
|
32
|
+
|
|
33
|
+
See also 'step', 'next' which have suffixes '+' and '-' which
|
|
34
|
+
override this setting.
|
|
35
|
+
EOH
|
|
36
|
+
|
|
37
|
+
IN_LIST = true
|
|
38
|
+
MIN_ABBREV = 'dif'.size
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
completion %w(on off nostack)
|
|
42
|
+
|
|
43
|
+
def run(args)
|
|
44
|
+
if args.size == 3 && 'nostack' == args[2]
|
|
45
|
+
@proc.settings[:different] = 'nostack'
|
|
46
|
+
msg("different is nostack.")
|
|
47
|
+
else
|
|
48
|
+
super
|
|
49
|
+
end
|
|
50
|
+
@proc.different_pos = @proc.settings[:different]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
if __FILE__ == $0
|
|
56
|
+
# Demo it.
|
|
57
|
+
require_relative '../../mock'
|
|
58
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetDifferent)
|
|
59
|
+
cmd.run(cmd.prefix + ['off'])
|
|
60
|
+
puts cmd.save_command
|
|
61
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subcmd'
|
|
5
|
+
|
|
6
|
+
class Trepan::Subcommand::SetHighlight < Trepan::SetBoolSubcommand
|
|
7
|
+
unless defined?(HELP)
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
HELP = 'Set whether we use terminal highlighting'
|
|
10
|
+
IN_LIST = true
|
|
11
|
+
MIN_ABBREV = 'hi'.size
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def complete(prefix)
|
|
15
|
+
Trepan::Complete.complete_token(%w(on off reset), prefix)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def run(args)
|
|
19
|
+
if LineCache.respond_to?(:clear_file_format_cache)
|
|
20
|
+
if args.size == 3 && 'reset' == args[2]
|
|
21
|
+
LineCache::clear_file_format_cache
|
|
22
|
+
@proc.settings[:highlight] = :term
|
|
23
|
+
else
|
|
24
|
+
super
|
|
25
|
+
@proc.settings[:highlight] = :term if @proc.settings[:highlight]
|
|
26
|
+
end
|
|
27
|
+
else
|
|
28
|
+
errmsg "Your version of LineCache doesn't support terminal highlight"
|
|
29
|
+
@proc.settings[:highlight] = nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
if __FILE__ == $0
|
|
35
|
+
# Demo it.
|
|
36
|
+
$0 = __FILE__ + 'notagain' # So we don't run this again
|
|
37
|
+
require_relative '../../mock'
|
|
38
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetHighlight, false)
|
|
39
|
+
cmd.run(cmd.prefix + ['off'])
|
|
40
|
+
cmd.run(cmd.prefix + ['ofn'])
|
|
41
|
+
cmd.run(cmd.prefix)
|
|
42
|
+
puts cmd.save_command
|
|
43
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
|
3
|
+
require 'rubygems'; require 'require_relative'
|
|
4
|
+
require_relative '../base/subsubcmd'
|
|
5
|
+
require_relative '../base/subsubmgr'
|
|
6
|
+
|
|
7
|
+
class Trepan::SubSubcommand::SetMax < Trepan::SubSubcommandMgr
|
|
8
|
+
Trepanning::Subcommand.set_name_prefix(__FILE__, self)
|
|
9
|
+
HELP = 'Set maximum length for things which may have unbounded size'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
if __FILE__ == $0
|
|
13
|
+
# Demo it.
|
|
14
|
+
require_relative '../../mock'
|
|
15
|
+
cmd_ary = Trepan::SubSubcommand::SetMax::PREFIX
|
|
16
|
+
dbgr, parent_cmd = MockDebugger::setup(cmd_ary[0], false)
|
|
17
|
+
cmd = Trepan::SubSubcommand::SetMax.new(dbgr.processor,
|
|
18
|
+
parent_cmd)
|
|
19
|
+
cmd_name = cmd_ary.join('')
|
|
20
|
+
prefix_run = cmd_ary[1..-1]
|
|
21
|
+
cmd.run(prefix_run)
|
|
22
|
+
# require 'trepanning'; debugger
|
|
23
|
+
%w(s lis foo).each do |prefix|
|
|
24
|
+
p [prefix, cmd.complete(prefix)]
|
|
25
|
+
end
|
|
26
|
+
end
|