rbx-trepanning 0.0.1-universal-rubinius
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 +376 -0
- data/LICENSE +25 -0
- data/NEWS +2 -0
- data/README.textile +28 -0
- data/Rakefile +165 -0
- data/THANKS +14 -0
- data/app/breakpoint.rb +218 -0
- data/app/breakpoint.rbc +3564 -0
- data/app/brkptmgr.rb +138 -0
- data/app/brkptmgr.rbc +2827 -0
- data/app/default.rb +61 -0
- data/app/default.rbc +1011 -0
- data/app/display.rb +35 -0
- data/app/display.rbc +968 -0
- data/app/frame.rb +98 -0
- data/app/frame.rbc +1808 -0
- data/app/irb.rb +112 -0
- data/app/irb.rbc +2111 -0
- data/app/iseq.rb +95 -0
- data/app/iseq.rbc +1801 -0
- data/app/method.rb +173 -0
- data/app/method.rbc +2492 -0
- data/app/mock.rb +13 -0
- data/app/mock.rbc +398 -0
- data/app/options.rb +123 -0
- data/app/options.rbc +2183 -0
- data/app/run.rb +86 -0
- data/app/run.rbc +1244 -0
- data/app/util.rb +49 -0
- data/app/util.rbc +1144 -0
- data/app/validate.rb +30 -0
- data/app/validate.rbc +676 -0
- data/bin/trepan.compiled.rbc +1043 -0
- data/bin/trepanx +63 -0
- data/bin/trepanx.compiled.rbc +985 -0
- data/interface/base_intf.rb +95 -0
- data/interface/base_intf.rbc +1742 -0
- data/interface/script.rb +104 -0
- data/interface/script.rbc +1642 -0
- data/interface/user.rb +91 -0
- data/interface/user.rbc +1418 -0
- data/io/base_io.rb +94 -0
- data/io/base_io.rbc +1404 -0
- data/io/input.rb +112 -0
- data/io/input.rbc +1979 -0
- data/io/null_output.rb +42 -0
- data/io/null_output.rbc +730 -0
- data/io/string_array.rb +156 -0
- data/io/string_array.rbc +2466 -0
- data/lib/trepanning.rb +398 -0
- data/lib/trepanning.rbc +6661 -0
- data/processor/breakpoint.rb +161 -0
- data/processor/command/alias.rb +55 -0
- data/processor/command/backtrace.rb +46 -0
- data/processor/command/base/cmd.rb +124 -0
- data/processor/command/base/subcmd.rb +213 -0
- data/processor/command/base/submgr.rb +179 -0
- data/processor/command/base/subsubcmd.rb +103 -0
- data/processor/command/base/subsubmgr.rb +184 -0
- data/processor/command/break.rb +100 -0
- data/processor/command/continue.rb +82 -0
- data/processor/command/delete.rb +30 -0
- data/processor/command/directory.rb +43 -0
- data/processor/command/disassemble.rb +103 -0
- data/processor/command/down.rb +54 -0
- data/processor/command/eval.rb +31 -0
- data/processor/command/exit.rb +58 -0
- data/processor/command/finish.rb +78 -0
- data/processor/command/frame.rb +89 -0
- data/processor/command/help.rb +146 -0
- data/processor/command/info.rb +28 -0
- data/processor/command/info_subcmd/breakpoints.rb +75 -0
- data/processor/command/info_subcmd/file.rb +153 -0
- data/processor/command/info_subcmd/method.rb +71 -0
- data/processor/command/info_subcmd/program.rb +59 -0
- data/processor/command/info_subcmd/variables.rb +40 -0
- data/processor/command/irb.rb +96 -0
- data/processor/command/kill.rb +70 -0
- data/processor/command/list.rb +296 -0
- data/processor/command/next.rb +66 -0
- data/processor/command/nexti.rb +59 -0
- data/processor/command/pr.rb +38 -0
- data/processor/command/ps.rb +40 -0
- data/processor/command/restart.rb +60 -0
- data/processor/command/set.rb +47 -0
- data/processor/command/set_subcmd/auto.rb +28 -0
- data/processor/command/set_subcmd/auto_subcmd/dis.rb +33 -0
- data/processor/command/set_subcmd/auto_subcmd/eval.rb +54 -0
- data/processor/command/set_subcmd/auto_subcmd/irb.rb +34 -0
- data/processor/command/set_subcmd/auto_subcmd/list.rb +34 -0
- data/processor/command/set_subcmd/basename.rb +26 -0
- data/processor/command/set_subcmd/debug.rb +27 -0
- data/processor/command/set_subcmd/debug_subcmd/dbgr.rb +36 -0
- data/processor/command/set_subcmd/debug_subcmd/skip.rb +23 -0
- data/processor/command/set_subcmd/debug_subcmd/step.rb +23 -0
- data/processor/command/set_subcmd/different.rb +60 -0
- data/processor/command/set_subcmd/hidelevel.rb +63 -0
- data/processor/command/set_subcmd/kernelstep.rb +61 -0
- data/processor/command/set_subcmd/max.rb +29 -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 +54 -0
- data/processor/command/set_subcmd/max_subcmd/width.rb +49 -0
- data/processor/command/set_subcmd/substitute.rb +25 -0
- data/processor/command/set_subcmd/substitute_subcmd/path.rb +56 -0
- data/processor/command/set_subcmd/trace.rb +37 -0
- data/processor/command/set_subcmd/trace_subcmd/print.rb +57 -0
- data/processor/command/show.rb +27 -0
- data/processor/command/show_subcmd/alias.rb +43 -0
- data/processor/command/show_subcmd/args.rb +26 -0
- data/processor/command/show_subcmd/auto.rb +28 -0
- data/processor/command/show_subcmd/auto_subcmd/dis.rb +37 -0
- data/processor/command/show_subcmd/auto_subcmd/eval.rb +28 -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 +22 -0
- data/processor/command/show_subcmd/debug.rb +27 -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 +27 -0
- data/processor/command/show_subcmd/hidelevel.rb +42 -0
- data/processor/command/show_subcmd/kernelstep.rb +37 -0
- data/processor/command/show_subcmd/max.rb +30 -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/trace.rb +29 -0
- data/processor/command/show_subcmd/trace_subcmd/print.rb +38 -0
- data/processor/command/source.rb +83 -0
- data/processor/command/step.rb +41 -0
- data/processor/command/tbreak.rb +19 -0
- data/processor/command/unalias.rb +44 -0
- data/processor/command/up.rb +87 -0
- data/processor/default.rb +56 -0
- data/processor/disassemble.rb +32 -0
- data/processor/eval.rb +96 -0
- data/processor/frame.rb +211 -0
- data/processor/help.rb +72 -0
- data/processor/hook.rb +133 -0
- data/processor/load_cmds.rb +101 -0
- data/processor/location.rb +128 -0
- data/processor/main.rb +394 -0
- data/processor/mock.rb +137 -0
- data/processor/msg.rb +28 -0
- data/processor/running.rb +230 -0
- data/processor/stepping.rb +115 -0
- data/processor/subcmd.rb +160 -0
- data/processor/validate.rb +355 -0
- data/test/data/enable.right +36 -0
- data/test/data/fname-with-blank.cmd +6 -0
- data/test/data/fname-with-blank.right +1 -0
- data/test/data/quit-Xdebug.right +3 -0
- data/test/data/quit.cmd +5 -0
- data/test/data/quit.right +0 -0
- data/test/example/fname with blank.rb +1 -0
- data/test/example/gcd-xx.rb +18 -0
- data/test/example/gcd.rb +19 -0
- data/test/example/gcd1.rb +24 -0
- data/test/example/null.rb +1 -0
- data/test/example/thread1.rb +3 -0
- data/test/functional/fn_helper.rb +112 -0
- data/test/functional/test-break-name.rb +52 -0
- data/test/functional/test-break.rb +51 -0
- data/test/functional/test-finish.rb +70 -0
- data/test/functional/test-fn_helper.rb +43 -0
- data/test/functional/test-list.rb +55 -0
- data/test/functional/test-next-bug.rb +49 -0
- data/test/functional/test-next.rb +101 -0
- data/test/functional/test-step.rb +272 -0
- data/test/functional/test-step2.rb +35 -0
- data/test/functional/test-tbreak.rb +41 -0
- data/test/integration/file-diff.rb +89 -0
- data/test/integration/helper.rb +78 -0
- data/test/integration/test-fname-with-blank.rb +12 -0
- data/test/integration/test-quit.rb +25 -0
- data/test/unit/cmd-helper.rb +46 -0
- data/test/unit/test-app-brkpt.rb +30 -0
- data/test/unit/test-app-brkptmgr.rb +51 -0
- data/test/unit/test-app-iseq.rb +49 -0
- data/test/unit/test-app-method.rb +54 -0
- data/test/unit/test-app-options.rb +61 -0
- data/test/unit/test-app-run.rb +16 -0
- data/test/unit/test-app-util.rb +28 -0
- data/test/unit/test-app-validate.rb +18 -0
- data/test/unit/test-base-subcmd.rb +61 -0
- data/test/unit/test-bin-trepanx.rb +48 -0
- data/test/unit/test-cmd-alias.rb +49 -0
- data/test/unit/test-cmd-break.rb +23 -0
- data/test/unit/test-cmd-exit.rb +27 -0
- data/test/unit/test-cmd-help.rb +101 -0
- data/test/unit/test-cmd-kill.rb +48 -0
- data/test/unit/test-intf-user.rb +46 -0
- data/test/unit/test-io-input.rb +27 -0
- data/test/unit/test-proc-eval.rb +37 -0
- data/test/unit/test-proc-frame.rb +79 -0
- data/test/unit/test-proc-help.rb +16 -0
- data/test/unit/test-proc-hook.rb +30 -0
- data/test/unit/test-proc-load_cmds.rb +41 -0
- data/test/unit/test-proc-location.rb +48 -0
- data/test/unit/test-proc-main.rb +96 -0
- data/test/unit/test-proc-validate.rb +91 -0
- data/test/unit/test-subcmd-help.rb +51 -0
- metadata +337 -0
@@ -0,0 +1,54 @@
|
|
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
|
+
HELP = "Evaluate unrecognized debugger commands.
|
9
|
+
|
10
|
+
Often inside the debugger, one would like to be able to run arbitrary
|
11
|
+
Ruby commands without having to preface Python expressions with \"print\" or
|
12
|
+
\"eval\". Setting \"auto eval\" on will cause unrecognized debugger
|
13
|
+
commands to be eval'd as a Ruby expression.
|
14
|
+
|
15
|
+
Note that if this is set, on error the message shown on type a bad
|
16
|
+
debugger command changes from:
|
17
|
+
|
18
|
+
Undefined command: \"fdafds\". Try \"help\".
|
19
|
+
|
20
|
+
to something more Ruby-eval-specific such as:
|
21
|
+
|
22
|
+
NameError: name 'fdafds' is not defined
|
23
|
+
|
24
|
+
One other thing that trips people up is when setting auto eval is that
|
25
|
+
there are some short debugger commands that sometimes one wants to use
|
26
|
+
as a variable, such as in an assignment statement. For example:
|
27
|
+
|
28
|
+
s = 5
|
29
|
+
|
30
|
+
which produce when 'auto eval' is on:
|
31
|
+
*** Command 'step' can take at most 1 argument(s); got 2.
|
32
|
+
|
33
|
+
because by default, 's' is an alias for the debugger 'step'
|
34
|
+
command. It is possible to remove that alias if this causes constant
|
35
|
+
problem. Another possibility is to go into a real Ruby shell via the
|
36
|
+
'irb' command.
|
37
|
+
"
|
38
|
+
MIN_ABBREV = 'ev'.size
|
39
|
+
NAME = File.basename(__FILE__, '.rb')
|
40
|
+
PREFIX = %W(set auto #{NAME})
|
41
|
+
SHORT_HELP = "Set evaluation of unrecognized debugger commands"
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
if __FILE__ == $0
|
47
|
+
# Demo it.
|
48
|
+
require_relative '../../../mock'
|
49
|
+
require_relative '../auto'
|
50
|
+
|
51
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetAuto,
|
52
|
+
Trepan::SubSubcommand::SetAutoEval)
|
53
|
+
cmd.run([cmd.name, 'off'])
|
54
|
+
end
|
@@ -0,0 +1,34 @@
|
|
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::Subcommand::SetAutoIrb < Trepan::SetBoolSubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = "Set to automatically go into irb each time we enter the debugger"
|
9
|
+
MIN_ABBREV = 'ir'.size
|
10
|
+
NAME = File.basename(__FILE__, '.rb')
|
11
|
+
PREFIX = %w(set auto irb)
|
12
|
+
end
|
13
|
+
|
14
|
+
def run(args)
|
15
|
+
super
|
16
|
+
if @proc.settings[:autoirb]
|
17
|
+
@proc.cmdloop_prehooks.insert_if_new(-1, *@proc.autoirb_hook)
|
18
|
+
else
|
19
|
+
@proc.cmdloop_prehooks.delete_by_name('autoirb')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
if __FILE__ == $0
|
26
|
+
# Demo it.
|
27
|
+
require_relative '../../../mock'
|
28
|
+
require_relative '../auto'
|
29
|
+
|
30
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetAuto,
|
31
|
+
Trepan::SubSubcommand::SetAutoIrb)
|
32
|
+
cmd.run([cmd.name, 'off'])
|
33
|
+
cmd.run([cmd.name, 'on'])
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
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::Subcommand::SetAutoList < Trepan::SetBoolSubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = "Set to run a 'list' command each time we enter the debugger"
|
9
|
+
MIN_ABBREV = 'l'.size
|
10
|
+
NAME = File.basename(__FILE__, '.rb')
|
11
|
+
PREFIX = %w(set auto list)
|
12
|
+
SHORT_HELP = "Set running a 'list' command each time we enter the debugger"
|
13
|
+
end
|
14
|
+
|
15
|
+
def run(args)
|
16
|
+
super
|
17
|
+
if @proc.settings[:autolist]
|
18
|
+
@proc.cmdloop_prehooks.insert_if_new(10, *@proc.autolist_hook)
|
19
|
+
else
|
20
|
+
@proc.cmdloop_prehooks.delete_by_name('autolist')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
if __FILE__ == $0
|
27
|
+
# Demo it.
|
28
|
+
require_relative '../../../mock'
|
29
|
+
require_relative '../auto'
|
30
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetAuto,
|
31
|
+
Trepan::SubSubcommand::SetAutoList)
|
32
|
+
cmd.run([cmd.name, 'off'])
|
33
|
+
cmd.run([cmd.name, 'on'])
|
34
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Copyright (C) 2010 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
|
+
NAME = File.basename(__FILE__, '.rb')
|
12
|
+
PREFIX = %w(set basename)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
if __FILE__ == $0
|
18
|
+
# Demo it.
|
19
|
+
$0 = __FILE__ + 'notagain' # So we don't run this agin
|
20
|
+
require_relative '../../mock'
|
21
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetBasename, false)
|
22
|
+
cmd.run(cmd.prefix + ['off'])
|
23
|
+
cmd.run(cmd.prefix + ['ofn'])
|
24
|
+
cmd.run(cmd.prefix)
|
25
|
+
puts cmd.save_command
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
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
|
+
require_relative '../base/subsubmgr'
|
6
|
+
|
7
|
+
class Trepan::SubSubcommand::SetDebug < Trepan::SubSubcommandMgr
|
8
|
+
unless defined?(HELP)
|
9
|
+
HELP = 'Set internal debugger settings'
|
10
|
+
NAME = File.basename(__FILE__, '.rb')
|
11
|
+
PREFIX = %W(set #{NAME})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
if __FILE__ == $0
|
16
|
+
require_relative '../../mock'
|
17
|
+
dbgr, cmd = MockDebugger::setup('set')
|
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,36 @@
|
|
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::SetDebugDbgr < Trepan::SetBoolSubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = 'set debug dbgr [on|off]
|
9
|
+
|
10
|
+
Facilitates debugging the debugger. Global variables $trepan_cmdproc
|
11
|
+
and $trepan_frame are set to the current values of @frame and self
|
12
|
+
when the command processor was entered. '
|
13
|
+
|
14
|
+
MIN_ABBREV = 'db'.size
|
15
|
+
NAME = File.basename(__FILE__, '.rb')
|
16
|
+
PREFIX = %W(set debug #{NAME})
|
17
|
+
SHORT_HELP = 'Set debugging debugger'
|
18
|
+
end
|
19
|
+
|
20
|
+
def run(args)
|
21
|
+
super
|
22
|
+
@proc.cmdloop_prehooks.insert_if_new(-1, *@proc.debug_dbgr_hook)
|
23
|
+
@proc.debug_dbgr_hook[1].call
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
if __FILE__ == $0
|
29
|
+
# Demo it.
|
30
|
+
require_relative '../../../mock'
|
31
|
+
require_relative '../debug'
|
32
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetDebug,
|
33
|
+
Trepan::SubSubcommand::SetDebugDbgr)
|
34
|
+
cmd.run([cmd.name, 'off'])
|
35
|
+
cmd.run([cmd.name, 'on'])
|
36
|
+
end
|
@@ -0,0 +1,23 @@
|
|
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::SetDebugSkip < Trepan::SetBoolSubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = 'Set debugging of statement skip logic'
|
9
|
+
MIN_ABBREV = 'sk'.size
|
10
|
+
NAME = File.basename(__FILE__, '.rb')
|
11
|
+
PREFIX = %W(set debug #{NAME})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
if __FILE__ == $0
|
16
|
+
# Demo it.
|
17
|
+
require_relative '../../../mock'
|
18
|
+
require_relative '../debug'
|
19
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetDebug,
|
20
|
+
Trepan::SubSubcommand::SetDebugSkip)
|
21
|
+
cmd.run([cmd.name, 'off'])
|
22
|
+
cmd.run([cmd.name, 'on'])
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
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::SetDebugStep < Trepan::SetBoolSubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = 'Set debugging of statement step logic'
|
9
|
+
MIN_ABBREV = 'st'.size
|
10
|
+
NAME = File.basename(__FILE__, '.rb')
|
11
|
+
PREFIX = %W(set debug #{NAME})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
if __FILE__ == $0
|
16
|
+
# Demo it.
|
17
|
+
require_relative '../../../mock'
|
18
|
+
require_relative '../debug'
|
19
|
+
cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::SetDebug,
|
20
|
+
Trepan::SubSubcommand::SetDebugStep)
|
21
|
+
cmd.run([cmd.name, 'off'])
|
22
|
+
cmd.run([cmd.name, 'on'])
|
23
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Copyright (C) 2010 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
|
+
NAME = File.basename(__FILE__, '.rb')
|
9
|
+
HELP = <<-EOH
|
10
|
+
set #{NAME} [on|off|nostack]
|
11
|
+
|
12
|
+
Set to make sure 'next/step' move to a new position.
|
13
|
+
|
14
|
+
Due to the interpretive, expression-oriented nature of the Ruby
|
15
|
+
Language and implementation, each line often may contain many possible
|
16
|
+
stopping points with possibly different event type. In a debugger it
|
17
|
+
is sometimes desirable to continue but stop only when the position
|
18
|
+
next changes.
|
19
|
+
|
20
|
+
Setting 'different' to on will cause each 'step' or 'next' command to
|
21
|
+
stop at a different position.
|
22
|
+
|
23
|
+
Note though that the notion of different does take into account stack
|
24
|
+
nesting. So in ARGV.map {|arg| arg.to_i} you get a stop before ARGV as
|
25
|
+
well as one in the block.
|
26
|
+
|
27
|
+
If you to ignore stopping at added nesting levels, there are two
|
28
|
+
possibilities. 'set step nostack' will ignore stack nestings levels on
|
29
|
+
a given line. Also you can use 'next', but that also stepping into
|
30
|
+
functions on different lines to also be skipped.
|
31
|
+
|
32
|
+
See also 'step', 'next' which have suffixes '+' and '-' which
|
33
|
+
override this setting.
|
34
|
+
EOH
|
35
|
+
|
36
|
+
IN_LIST = true
|
37
|
+
MIN_ABBREV = 'dif'.size
|
38
|
+
PREFIX = %W(set #{NAME})
|
39
|
+
SHORT_HELP = "Set to make sure 'next/step' move to a new position."
|
40
|
+
end
|
41
|
+
|
42
|
+
def run(args)
|
43
|
+
if args.size == 3 && 'nostack' == args[2]
|
44
|
+
@proc.settings[:different] = 'nostack'
|
45
|
+
msg("different is nostack.")
|
46
|
+
else
|
47
|
+
super
|
48
|
+
end
|
49
|
+
@proc.different_pos = @proc.settings[:different]
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
if __FILE__ == $0
|
55
|
+
# Demo it.
|
56
|
+
require_relative '../../mock'
|
57
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetDifferent)
|
58
|
+
cmd.run(cmd.prefix + ['off'])
|
59
|
+
puts cmd.save_command
|
60
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
|
3
|
+
require 'rubygems'; require 'require_relative'
|
4
|
+
require_relative '../base/subcmd'
|
5
|
+
|
6
|
+
class Trepan::Subcommand::SetHidelevel < Trepan::Subcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
NAME = File.basename(__FILE__, '.rb')
|
9
|
+
HELP = <<-EOH
|
10
|
+
set #{NAME} [NUM]
|
11
|
+
|
12
|
+
Hide this many stack frames from the bottom (or least-recent) frame.
|
13
|
+
|
14
|
+
Often the bottom-most frames are setup frames that one doesn't think
|
15
|
+
of as being part of one's program but are part of the overhead loading
|
16
|
+
or debugging the program. As such generally they are unintersting in
|
17
|
+
a backtrace command and one wants these omitted.
|
18
|
+
|
19
|
+
If NUM is 0, no stack frames are hidden. If NUM is < 0 or omitted,
|
20
|
+
then use value the program sets automatically. If the value is larger
|
21
|
+
than the current number of entries in the stack, i.e. the stack shown
|
22
|
+
would be otherwise be, empty then we show all entries, or take NUM to
|
23
|
+
be 0.
|
24
|
+
|
25
|
+
Examples:
|
26
|
+
set #{NAME} # Use the default value and hide 'uninteresting' ones
|
27
|
+
set #{NAME} 0 # Show all stack entries, even from loading the program
|
28
|
+
# or initial stack entries the debugger created to
|
29
|
+
# debug the program.
|
30
|
+
set #{NAME} 1 # Hide only the bottom-most or least-recent stack frame.
|
31
|
+
|
32
|
+
See also 'backtrace' and 'show hidelevel'.
|
33
|
+
.
|
34
|
+
EOH
|
35
|
+
|
36
|
+
IN_LIST = true
|
37
|
+
MIN_ABBREV = 'hide'.size
|
38
|
+
PREFIX = %W(set #{NAME})
|
39
|
+
SHORT_HELP = "Set the number of bottom frames to hide."
|
40
|
+
end
|
41
|
+
|
42
|
+
def run(args)
|
43
|
+
if args.size == 2
|
44
|
+
val = nil
|
45
|
+
else
|
46
|
+
val = @proc.get_an_int(args[2])
|
47
|
+
return unless val
|
48
|
+
end
|
49
|
+
@proc.hidelevels[@current_thread] = nil
|
50
|
+
@proc.settings[:hidelevel] = val
|
51
|
+
@proc.set_hide_level
|
52
|
+
@proc.run_command('show hidelevel')
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
if __FILE__ == $0
|
58
|
+
# Demo it.
|
59
|
+
require_relative '../../mock'
|
60
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetHidelevel, false)
|
61
|
+
cmd.run(cmd.prefix + %w(10))
|
62
|
+
cmd.run(cmd.prefix)
|
63
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.net>
|
3
|
+
require 'rubygems'; require 'require_relative'
|
4
|
+
require_relative '../show_subcmd/kernelstep'
|
5
|
+
|
6
|
+
class Trepan::Subcommand::SetKernelstep < Trepan::Subcommand::ShowKernelstep
|
7
|
+
unless defined?(HELP)
|
8
|
+
NAME = File.basename(__FILE__, '.rb')
|
9
|
+
HELP = <<-EOH
|
10
|
+
set #{NAME} [on|off]
|
11
|
+
|
12
|
+
Allow/disallow stepping into kernel methods.
|
13
|
+
EOH
|
14
|
+
|
15
|
+
IN_LIST = true
|
16
|
+
MIN_ABBREV = 'kern'.size
|
17
|
+
PREFIX = %W(set #{NAME})
|
18
|
+
SHORT_HELP = "Set stepping into kernel methods."
|
19
|
+
end
|
20
|
+
|
21
|
+
def run(args)
|
22
|
+
onoff_arg = args.size < 3 ? 'on' : args[2]
|
23
|
+
begin
|
24
|
+
on = @proc.get_onoff(onoff_arg)
|
25
|
+
rescue NameError, TypeError
|
26
|
+
return
|
27
|
+
end
|
28
|
+
|
29
|
+
if on
|
30
|
+
if ignore?
|
31
|
+
@proc.ignore_file_re.delete(KERNEL_METHOD_FILE_RE)
|
32
|
+
else
|
33
|
+
errmsg("We aren't ignoring kernel methods for stepping.")
|
34
|
+
return
|
35
|
+
end
|
36
|
+
else
|
37
|
+
if ignore?
|
38
|
+
errmsg("We already should be ignoring kernel methods for stepping.")
|
39
|
+
return
|
40
|
+
else
|
41
|
+
@proc.ignore_file_re[KERNEL_METHOD_FILE_RE] = 'step-finish'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
show
|
45
|
+
end
|
46
|
+
|
47
|
+
def save_command
|
48
|
+
PREFIX.join(' ') + (ignore? ? ' on' : ' off')
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
if __FILE__ == $0
|
54
|
+
# Demo it.
|
55
|
+
require_relative '../../mock'
|
56
|
+
cmd = MockDebugger::sub_setup(Trepan::Subcommand::SetKernelstep)
|
57
|
+
cmd.run(cmd.prefix + ['off'])
|
58
|
+
puts cmd.save_command
|
59
|
+
cmd.run(cmd.prefix + ['on'])
|
60
|
+
puts cmd.save_command
|
61
|
+
end
|
@@ -0,0 +1,29 @@
|
|
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
|
+
require_relative '../base/subsubmgr'
|
6
|
+
|
7
|
+
class Trepan::SubSubcommand::SetMax < Trepan::SubSubcommandMgr
|
8
|
+
HELP = 'Set maximum length for things which may have unbounded size'
|
9
|
+
NAME = File.basename(__FILE__, '.rb')
|
10
|
+
PREFIX = %W(set #{NAME})
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
if __FILE__ == $0
|
15
|
+
# Demo it.
|
16
|
+
require_relative '../../mock'
|
17
|
+
cmd_ary = Trepan::SubSubcommand::SetMax::PREFIX
|
18
|
+
dbgr, parent_cmd = MockDebugger::setup(cmd_ary[0], false)
|
19
|
+
cmd = Trepan::SubSubcommand::SetMax.new(dbgr.processor,
|
20
|
+
parent_cmd)
|
21
|
+
cmd_name = cmd_ary.join('')
|
22
|
+
prefix_run = cmd_ary[1..-1]
|
23
|
+
cmd.run(prefix_run)
|
24
|
+
# require_relative '../../../lib/trepanning'
|
25
|
+
# # Trepan.debug(:set_restart => true)
|
26
|
+
## puts cmd.summary_help(cmd.name)
|
27
|
+
## puts
|
28
|
+
## puts '-' * 20
|
29
|
+
end
|
@@ -0,0 +1,49 @@
|
|
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::SetMaxList < Trepan::SubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = 'Set max[imum] list NUMBER
|
9
|
+
|
10
|
+
Set number of source-code lines to list by default.'
|
11
|
+
IN_LIST = true
|
12
|
+
MIN_ABBREV = 'lis'.size
|
13
|
+
NAME = File.basename(__FILE__, '.rb')
|
14
|
+
PREFIX = %w(set max list)
|
15
|
+
SHORT_HELP = 'Set number of lines to list'
|
16
|
+
end
|
17
|
+
|
18
|
+
def run(args)
|
19
|
+
args.shift
|
20
|
+
run_set_int(args.join(' '),
|
21
|
+
"The '#{PREFIX.join(' ')}' command requires a list size",
|
22
|
+
0, nil)
|
23
|
+
end
|
24
|
+
|
25
|
+
alias save_command save_command_from_settings
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
if __FILE__ == $0
|
30
|
+
# Demo it.
|
31
|
+
require_relative '../../../mock'
|
32
|
+
|
33
|
+
dbgr, set_cmd = MockDebugger::setup('set', false)
|
34
|
+
max_cmd = Trepan::SubSubcommand::SetMax.new(dbgr.processor,
|
35
|
+
set_cmd)
|
36
|
+
cmd_ary = Trepan::SubSubcommand::SetMaxWidth::PREFIX
|
37
|
+
cmd_name = cmd_ary.join('')
|
38
|
+
subcmd = Trepan::SubSubcommand::SetMaxList.new(set_cmd.proc,
|
39
|
+
max_cmd,
|
40
|
+
cmd_name)
|
41
|
+
prefix_run = cmd_ary[1..-1]
|
42
|
+
subcmd.run(prefix_run)
|
43
|
+
subcmd.run(prefix_run + %w(0))
|
44
|
+
subcmd.run(prefix_run + %w(20))
|
45
|
+
subcmd.summary_help(subcmd.name)
|
46
|
+
puts
|
47
|
+
puts '-' * 20
|
48
|
+
puts subcmd.save_command
|
49
|
+
end
|
@@ -0,0 +1,50 @@
|
|
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::Subcommand::SetMaxStack < Trepan::SubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = 'Set number of backtrace lines the debugger will show'
|
9
|
+
DEFAULT_MIN = 3
|
10
|
+
MIN_ABBREV = 'sta'.size
|
11
|
+
NAME = File.basename(__FILE__, '.rb')
|
12
|
+
PREFIX = %w(set max stack)
|
13
|
+
end
|
14
|
+
|
15
|
+
def run(args)
|
16
|
+
args.shift
|
17
|
+
args = %W(#{DEFAULT_MIN}) if args.empty?
|
18
|
+
run_set_int(args.join(' '),
|
19
|
+
"The '#{PREFIX.join(' ')}' command requires a list size",
|
20
|
+
DEFAULT_MIN, nil)
|
21
|
+
end
|
22
|
+
|
23
|
+
alias save_command save_command_from_settings
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
if __FILE__ == $0
|
28
|
+
# Demo it.
|
29
|
+
require_relative '../../../mock'
|
30
|
+
dbgr, set_cmd = MockDebugger::setup('set')
|
31
|
+
name = File.basename(__FILE__, '.rb')
|
32
|
+
|
33
|
+
dbgr, set_cmd = MockDebugger::setup('set')
|
34
|
+
max_cmd = Trepan::SubSubcommand::SetMax.new(dbgr.processor,
|
35
|
+
set_cmd)
|
36
|
+
cmd_ary = Trepan::SubSubcommand::SetMaxStack::PREFIX
|
37
|
+
cmd_name = cmd_ary.join('')
|
38
|
+
subcmd = Trepan::SubSubcommand::SetMaxStack.new(set_cmd.proc,
|
39
|
+
max_cmd,
|
40
|
+
cmd_name)
|
41
|
+
prefix_run = cmd_ary[1..-1]
|
42
|
+
subcmd.run(prefix_run)
|
43
|
+
subcmd.run(prefix_run + %w(0))
|
44
|
+
subcmd.run(prefix_run + %w(20))
|
45
|
+
name = File.basename(__FILE__, '.rb')
|
46
|
+
subcmd.summary_help(name)
|
47
|
+
puts
|
48
|
+
puts '-' * 20
|
49
|
+
puts subcmd.save_command
|
50
|
+
end
|
@@ -0,0 +1,54 @@
|
|
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::SetMaxString < Trepan::SubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = 'Set max st[ring] NUMBER
|
9
|
+
|
10
|
+
Sometimes the string representation of an object is very long. This
|
11
|
+
setting limits how much of the string representation you want to
|
12
|
+
see. However if the string has an embedded newline then we will assume
|
13
|
+
the output is intended to be formated as is.
|
14
|
+
'
|
15
|
+
DEFAULT_MIN = 10
|
16
|
+
MIN_ABBREV = 'str'.size
|
17
|
+
NAME = File.basename(__FILE__, '.rb')
|
18
|
+
PREFIX = %w(set max string)
|
19
|
+
SHORT_HELP = "Set maximum # chars in a string before truncation"
|
20
|
+
end
|
21
|
+
|
22
|
+
def run(args)
|
23
|
+
args.shift
|
24
|
+
args = %W(#{DEFAULT_MIN}) if args.empty?
|
25
|
+
run_set_int(args.join(' '),
|
26
|
+
"The 'set maximum string' command requires number at least #{DEFAULT_MIN}",
|
27
|
+
DEFAULT_MIN, nil)
|
28
|
+
end
|
29
|
+
|
30
|
+
alias save_command save_command_from_settings
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
if __FILE__ == $0
|
35
|
+
# Demo it.
|
36
|
+
require_relative '../../../mock'
|
37
|
+
dbgr, set_cmd = MockDebugger::setup('set')
|
38
|
+
# max_cmd = Trepan::SubSubcommand::SetMax.new(dbgr.core.processor,
|
39
|
+
# set_cmd)
|
40
|
+
# # FIXME: remove the 'join' below
|
41
|
+
# cmd_name = Trepan::SubSubcommand::SetMaxString::PREFIX.join('')
|
42
|
+
# subcmd = Trepan::SubSubcommand::SetMaxString.new(set_cmd.proc,
|
43
|
+
# max_cmd,
|
44
|
+
# cmd_name)
|
45
|
+
# subcmd.run([])
|
46
|
+
# subcmd.run(%w(0))
|
47
|
+
# subcmd.run(%w(20))
|
48
|
+
# subcmd.run(%w(100))
|
49
|
+
name = File.basename(__FILE__, '.rb')
|
50
|
+
subcmd.summary_help(name)
|
51
|
+
puts
|
52
|
+
# puts '-' * 20
|
53
|
+
# puts subcmd.save_command
|
54
|
+
end
|
@@ -0,0 +1,49 @@
|
|
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::SetMaxWidth < Trepan::SubSubcommand
|
7
|
+
unless defined?(HELP)
|
8
|
+
HELP = 'Set max[imum] width NUMBER
|
9
|
+
|
10
|
+
Set number of characters the debugger thinks are in a line.'
|
11
|
+
IN_LIST = true
|
12
|
+
MIN_ABBREV = 'wid'.size
|
13
|
+
NAME = File.basename(__FILE__, '.rb')
|
14
|
+
PREFIX = %w(set max width)
|
15
|
+
SHORT_HELP = 'Set number of characters the debugger thinks are in a line'
|
16
|
+
end
|
17
|
+
|
18
|
+
def run(args)
|
19
|
+
args.shift
|
20
|
+
run_set_int(args.join(' '),
|
21
|
+
"The 'width' command requires a line width",
|
22
|
+
0, nil)
|
23
|
+
end
|
24
|
+
|
25
|
+
alias save_command save_command_from_settings
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
if __FILE__ == $0
|
30
|
+
# Demo it.
|
31
|
+
require_relative '../../../mock'
|
32
|
+
name = File.basename(__FILE__, '.rb')
|
33
|
+
|
34
|
+
dbgr, set_cmd = MockDebugger::setup('set')
|
35
|
+
# max_cmd = Trepan::SubSubcommand::SetMax.new(dbgr.core.processor,
|
36
|
+
# set_cmd)
|
37
|
+
# cmd_name = Trepan::SubSubcommand::SetMaxWidth::PREFIX.join('')
|
38
|
+
# subcmd = Trepan::SubSubcommand::SetMaxWidth.new(set_cmd.proc,
|
39
|
+
# max_cmd,
|
40
|
+
# cmd_name)
|
41
|
+
# subcmd.run(['max', 'width'])
|
42
|
+
# subcmd.run(%w(set max width 0))
|
43
|
+
# subcmd.run(%w(set max width 20))
|
44
|
+
name = File.basename(__FILE__, '.rb')
|
45
|
+
subcmd.summary_help(name)
|
46
|
+
# puts
|
47
|
+
# puts '-' * 20
|
48
|
+
# puts subcmd.save_command
|
49
|
+
end
|