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.
Files changed (274) hide show
  1. data/.gitignore +3 -0
  2. data/CHANGES +34 -0
  3. data/ChangeLog +875 -0
  4. data/README.textile +59 -0
  5. data/Rakefile +215 -0
  6. data/app/.gitignore +1 -0
  7. data/app/cmd_parse.kpeg +241 -0
  8. data/app/cmd_parse.rb +212 -0
  9. data/app/cmd_parser.rb +1948 -0
  10. data/app/complete.rb +79 -0
  11. data/app/default.rb +90 -0
  12. data/app/display.rb +148 -0
  13. data/app/eventbuffer.rb +147 -0
  14. data/app/frame.rb +166 -0
  15. data/app/irb.rb +114 -0
  16. data/app/options.rb +200 -0
  17. data/app/run.rb +74 -0
  18. data/app/util.rb +65 -0
  19. data/bin/.gitignore +1 -0
  20. data/bin/trepan8 +115 -0
  21. data/data/.gitignore +1 -0
  22. data/data/irbrc +41 -0
  23. data/interface/.gitignore +1 -0
  24. data/interface/base_intf.rb +109 -0
  25. data/interface/client.rb +82 -0
  26. data/interface/comcodes.rb +20 -0
  27. data/interface/script.rb +110 -0
  28. data/interface/server.rb +147 -0
  29. data/interface/user.rb +165 -0
  30. data/io/base_io.rb +148 -0
  31. data/io/input.rb +158 -0
  32. data/io/null_output.rb +46 -0
  33. data/io/string_array.rb +156 -0
  34. data/io/tcpclient.rb +129 -0
  35. data/io/tcpfns.rb +33 -0
  36. data/io/tcpserver.rb +141 -0
  37. data/lib/debugger.rb +8 -0
  38. data/lib/trepanning.rb +283 -0
  39. data/processor/.gitignore +1 -0
  40. data/processor/command-ruby-debug/breakpoints.rb +155 -0
  41. data/processor/command-ruby-debug/catchpoint.rb +55 -0
  42. data/processor/command-ruby-debug/condition.rb +49 -0
  43. data/processor/command-ruby-debug/control.rb +31 -0
  44. data/processor/command-ruby-debug/display.rb +120 -0
  45. data/processor/command-ruby-debug/enable.rb +202 -0
  46. data/processor/command-ruby-debug/frame.rb +199 -0
  47. data/processor/command-ruby-debug/help.rb +63 -0
  48. data/processor/command-ruby-debug/info.rb +359 -0
  49. data/processor/command-ruby-debug/method.rb +84 -0
  50. data/processor/command-ruby-debug/reload.rb +40 -0
  51. data/processor/command-ruby-debug/save.rb +90 -0
  52. data/processor/command-ruby-debug/set.rb +237 -0
  53. data/processor/command-ruby-debug/show.rb +251 -0
  54. data/processor/command-ruby-debug/source.rb +36 -0
  55. data/processor/command-ruby-debug/threads.rb +189 -0
  56. data/processor/command-ruby-debug/trace.rb +57 -0
  57. data/processor/command-ruby-debug/variables.rb +199 -0
  58. data/processor/command.rb +270 -0
  59. data/processor/command/.gitignore +1 -0
  60. data/processor/command/alias.rb +54 -0
  61. data/processor/command/backtrace.rb +123 -0
  62. data/processor/command/base/cmd.rb +177 -0
  63. data/processor/command/base/subcmd.rb +230 -0
  64. data/processor/command/base/submgr.rb +188 -0
  65. data/processor/command/base/subsubcmd.rb +128 -0
  66. data/processor/command/base/subsubmgr.rb +199 -0
  67. data/processor/command/break.rb +114 -0
  68. data/processor/command/catch.rb +71 -0
  69. data/processor/command/complete.rb +39 -0
  70. data/processor/command/continue.rb +57 -0
  71. data/processor/command/directory.rb +50 -0
  72. data/processor/command/disable.rb +85 -0
  73. data/processor/command/display.rb +78 -0
  74. data/processor/command/down.rb +54 -0
  75. data/processor/command/edit.rb +79 -0
  76. data/processor/command/enable.rb +48 -0
  77. data/processor/command/eval.rb +90 -0
  78. data/processor/command/exit.rb +66 -0
  79. data/processor/command/finish.rb +59 -0
  80. data/processor/command/frame.rb +97 -0
  81. data/processor/command/help.rb +230 -0
  82. data/processor/command/help/.gitignore +1 -0
  83. data/processor/command/help/README +10 -0
  84. data/processor/command/help/command.txt +58 -0
  85. data/processor/command/help/examples.txt +16 -0
  86. data/processor/command/help/filename.txt +40 -0
  87. data/processor/command/help/location.txt +37 -0
  88. data/processor/command/help/suffixes.txt +17 -0
  89. data/processor/command/info.rb +28 -0
  90. data/processor/command/info_subcmd/.gitignore +1 -0
  91. data/processor/command/info_subcmd/args.rb +39 -0
  92. data/processor/command/info_subcmd/breakpoints.rb +80 -0
  93. data/processor/command/info_subcmd/catch.rb +36 -0
  94. data/processor/command/info_subcmd/files.rb +39 -0
  95. data/processor/command/info_subcmd/globals.rb +64 -0
  96. data/processor/command/info_subcmd/line.rb +30 -0
  97. data/processor/command/info_subcmd/locals.rb +69 -0
  98. data/processor/command/info_subcmd/macro.rb +62 -0
  99. data/processor/command/info_subcmd/program.rb +51 -0
  100. data/processor/command/info_subcmd/ruby.rb +57 -0
  101. data/processor/command/info_subcmd/source.rb +74 -0
  102. data/processor/command/info_subcmd/stack.rb +25 -0
  103. data/processor/command/info_subcmd/threads.rb +75 -0
  104. data/processor/command/kill.rb +78 -0
  105. data/processor/command/list.rb +117 -0
  106. data/processor/command/macro.rb +68 -0
  107. data/processor/command/next.rb +79 -0
  108. data/processor/command/parsetree.rb +56 -0
  109. data/processor/command/pp.rb +40 -0
  110. data/processor/command/pr.rb +37 -0
  111. data/processor/command/ps.rb +40 -0
  112. data/processor/command/restart.rb +86 -0
  113. data/processor/command/save.rb +58 -0
  114. data/processor/command/set.rb +47 -0
  115. data/processor/command/set_subcmd/.gitignore +1 -0
  116. data/processor/command/set_subcmd/abbrev.rb +25 -0
  117. data/processor/command/set_subcmd/auto.rb +27 -0
  118. data/processor/command/set_subcmd/auto_subcmd/.gitignore +1 -0
  119. data/processor/command/set_subcmd/auto_subcmd/eval.rb +53 -0
  120. data/processor/command/set_subcmd/auto_subcmd/irb.rb +33 -0
  121. data/processor/command/set_subcmd/auto_subcmd/list.rb +33 -0
  122. data/processor/command/set_subcmd/basename.rb +25 -0
  123. data/processor/command/set_subcmd/callstyle.rb +46 -0
  124. data/processor/command/set_subcmd/confirm.rb +24 -0
  125. data/processor/command/set_subcmd/debug.rb +47 -0
  126. data/processor/command/set_subcmd/different.rb +61 -0
  127. data/processor/command/set_subcmd/highlight.rb +43 -0
  128. data/processor/command/set_subcmd/max.rb +26 -0
  129. data/processor/command/set_subcmd/max_subcmd/list.rb +49 -0
  130. data/processor/command/set_subcmd/max_subcmd/stack.rb +50 -0
  131. data/processor/command/set_subcmd/max_subcmd/string.rb +76 -0
  132. data/processor/command/set_subcmd/max_subcmd/width.rb +49 -0
  133. data/processor/command/set_subcmd/reload.rb +42 -0
  134. data/processor/command/set_subcmd/timer.rb +58 -0
  135. data/processor/command/set_subcmd/trace.rb +37 -0
  136. data/processor/command/set_subcmd/trace_subcmd/buffer.rb +42 -0
  137. data/processor/command/set_subcmd/trace_subcmd/print.rb +41 -0
  138. data/processor/command/shell.rb +139 -0
  139. data/processor/command/show.rb +39 -0
  140. data/processor/command/show_subcmd/.gitignore +1 -0
  141. data/processor/command/show_subcmd/abbrev.rb +20 -0
  142. data/processor/command/show_subcmd/alias.rb +46 -0
  143. data/processor/command/show_subcmd/args.rb +34 -0
  144. data/processor/command/show_subcmd/auto.rb +28 -0
  145. data/processor/command/show_subcmd/auto_subcmd/eval.rb +27 -0
  146. data/processor/command/show_subcmd/auto_subcmd/irb.rb +23 -0
  147. data/processor/command/show_subcmd/auto_subcmd/list.rb +22 -0
  148. data/processor/command/show_subcmd/basename.rb +20 -0
  149. data/processor/command/show_subcmd/callstyle.rb +22 -0
  150. data/processor/command/show_subcmd/confirm.rb +18 -0
  151. data/processor/command/show_subcmd/debug.rb +26 -0
  152. data/processor/command/show_subcmd/debug_subcmd/dbgr.rb +21 -0
  153. data/processor/command/show_subcmd/debug_subcmd/skip.rb +22 -0
  154. data/processor/command/show_subcmd/debug_subcmd/step.rb +22 -0
  155. data/processor/command/show_subcmd/different.rb +26 -0
  156. data/processor/command/show_subcmd/directories.rb +22 -0
  157. data/processor/command/show_subcmd/highlight.rb +24 -0
  158. data/processor/command/show_subcmd/max.rb +27 -0
  159. data/processor/command/show_subcmd/max_subcmd/list.rb +38 -0
  160. data/processor/command/show_subcmd/max_subcmd/stack.rb +36 -0
  161. data/processor/command/show_subcmd/max_subcmd/string.rb +42 -0
  162. data/processor/command/show_subcmd/max_subcmd/width.rb +37 -0
  163. data/processor/command/show_subcmd/reload.rb +18 -0
  164. data/processor/command/show_subcmd/timer.rb +18 -0
  165. data/processor/command/show_subcmd/trace.rb +29 -0
  166. data/processor/command/show_subcmd/trace_subcmd/buffer.rb +65 -0
  167. data/processor/command/show_subcmd/trace_subcmd/print.rb +23 -0
  168. data/processor/command/show_subcmd/version.rb +23 -0
  169. data/processor/command/source.rb +134 -0
  170. data/processor/command/step.rb +81 -0
  171. data/processor/command/tbreak.rb +19 -0
  172. data/processor/command/unalias.rb +44 -0
  173. data/processor/command/undisplay.rb +59 -0
  174. data/processor/command/up.rb +72 -0
  175. data/processor/default.rb +56 -0
  176. data/processor/display.rb +17 -0
  177. data/processor/eval.rb +113 -0
  178. data/processor/eventbuf.rb +105 -0
  179. data/processor/frame.rb +172 -0
  180. data/processor/help.rb +92 -0
  181. data/processor/helper.rb +76 -0
  182. data/processor/hook.rb +134 -0
  183. data/processor/load_cmds.rb +258 -0
  184. data/processor/location.rb +174 -0
  185. data/processor/main.rb +455 -0
  186. data/processor/mock.rb +136 -0
  187. data/processor/msg.rb +61 -0
  188. data/processor/processor.rb +674 -0
  189. data/processor/running.rb +168 -0
  190. data/processor/stepping.rb +18 -0
  191. data/processor/subcmd.rb +161 -0
  192. data/processor/validate.rb +355 -0
  193. data/processor/virtual.rb +34 -0
  194. data/test/data/.gitignore +1 -0
  195. data/test/data/break_bad.cmd +19 -0
  196. data/test/data/break_bad.right +29 -0
  197. data/test/data/break_loop_bug.cmd +5 -0
  198. data/test/data/break_loop_bug.right +15 -0
  199. data/test/data/dollar-0.right +2 -0
  200. data/test/data/dollar-0a.right +2 -0
  201. data/test/data/dollar-0b.right +2 -0
  202. data/test/data/edit.cmd +14 -0
  203. data/test/data/edit.right +24 -0
  204. data/test/data/file-with-space.cmd +6 -0
  205. data/test/data/file-with-space.right +4 -0
  206. data/test/data/printvar.cmd +17 -0
  207. data/test/data/printvar.right +31 -0
  208. data/test/data/raise.cmd +11 -0
  209. data/test/data/raise.right +19 -0
  210. data/test/data/source.cmd +5 -0
  211. data/test/data/source.right +18 -0
  212. data/test/data/stepping-1.9.right +50 -0
  213. data/test/data/stepping.cmd +21 -0
  214. data/test/data/stepping.right +48 -0
  215. data/test/data/trepan8-save.1 +6 -0
  216. data/test/example/bp_loop_issue.rb +3 -0
  217. data/test/example/break-bug.rb +7 -0
  218. data/test/example/brkpt-class-bug.rb +8 -0
  219. data/test/example/classes.rb +11 -0
  220. data/test/example/dollar-0.rb +5 -0
  221. data/test/example/except-bug1.rb +4 -0
  222. data/test/example/except-bug2.rb +7 -0
  223. data/test/example/file with space.rb +1 -0
  224. data/test/example/gcd.rb +18 -0
  225. data/test/example/info-var-bug.rb +47 -0
  226. data/test/example/info-var-bug2.rb +2 -0
  227. data/test/example/null.rb +1 -0
  228. data/test/example/pm-bug.rb +3 -0
  229. data/test/example/pm.rb +11 -0
  230. data/test/example/raise.rb +3 -0
  231. data/test/integration/.gitignore +4 -0
  232. data/test/integration/config.yaml +8 -0
  233. data/test/integration/helper.rb +154 -0
  234. data/test/integration/test-break_bad.rb +26 -0
  235. data/test/integration/test-dollar-0.rb +31 -0
  236. data/test/integration/test-edit.rb +17 -0
  237. data/test/integration/test-file-with-space.rb +26 -0
  238. data/test/integration/test-printvar.rb +17 -0
  239. data/test/integration/test-raise.rb +21 -0
  240. data/test/integration/test-source.rb +16 -0
  241. data/test/integration/test-stepping.rb +24 -0
  242. data/test/unit/.gitignore +1 -0
  243. data/test/unit/cmd-helper.rb +52 -0
  244. data/test/unit/mock-helper.rb +12 -0
  245. data/test/unit/test-app-cmd_parse.rb +97 -0
  246. data/test/unit/test-app-cmd_parser.rb +23 -0
  247. data/test/unit/test-app-complete.rb +39 -0
  248. data/test/unit/test-app-frame.rb +32 -0
  249. data/test/unit/test-app-options.rb +92 -0
  250. data/test/unit/test-app-run.rb +14 -0
  251. data/test/unit/test-app-util.rb +44 -0
  252. data/test/unit/test-base-cmd.rb +45 -0
  253. data/test/unit/test-base-subcmd.rb +57 -0
  254. data/test/unit/test-base-submgr.rb +23 -0
  255. data/test/unit/test-base-subsubcmd.rb +17 -0
  256. data/test/unit/test-cmd-alias.rb +48 -0
  257. data/test/unit/test-cmd-exit.rb +27 -0
  258. data/test/unit/test-cmd-help.rb +104 -0
  259. data/test/unit/test-cmd-kill.rb +46 -0
  260. data/test/unit/test-cmd-source.rb +34 -0
  261. data/test/unit/test-completion.rb +42 -0
  262. data/test/unit/test-intf-user.rb +46 -0
  263. data/test/unit/test-io-input.rb +27 -0
  264. data/test/unit/test-io-tcp.rb +33 -0
  265. data/test/unit/test-io-tcpclient.rb +54 -0
  266. data/test/unit/test-io-tcpfns.rb +17 -0
  267. data/test/unit/test-io-tcpserver.rb +50 -0
  268. data/test/unit/test-proc-eval.rb +36 -0
  269. data/test/unit/test-proc-hook.rb +30 -0
  270. data/test/unit/test-proc-load_cmds.rb +50 -0
  271. data/test/unit/test-proc-location.rb +79 -0
  272. data/test/unit/test-subcmd-help.rb +44 -0
  273. data/trepan8.gemspec +52 -0
  274. 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,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