trepanning 0.1.6 → 1.93.32

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 (113) hide show
  1. data/COPYING +57 -0
  2. data/ChangeLog +585 -736
  3. data/NEWS +26 -12
  4. data/README.md +62 -0
  5. data/Rakefile +15 -9
  6. data/app/breakpoint.rb +11 -12
  7. data/app/complete.rb +14 -14
  8. data/app/core.rb +34 -30
  9. data/app/default.rb +8 -7
  10. data/app/markdown.rb +191 -0
  11. data/app/options.rb +104 -99
  12. data/app/run.rb +9 -1
  13. data/app/util.rb +7 -7
  14. data/bin/trepan +7 -7
  15. data/interface.rb +0 -4
  16. data/interface/user.rb +11 -11
  17. data/io/input.rb +13 -13
  18. data/lib/trepanning.rb +30 -29
  19. data/processor.rb +40 -40
  20. data/processor/command.rb +13 -9
  21. data/processor/command/alias.rb +21 -15
  22. data/processor/command/backtrace.rb +27 -19
  23. data/processor/command/break.rb +24 -21
  24. data/processor/command/complete.rb +5 -2
  25. data/processor/command/condition.rb +14 -9
  26. data/processor/command/debug.rb +8 -8
  27. data/processor/command/down.rb +6 -6
  28. data/processor/command/edit.rb +4 -0
  29. data/processor/command/eval.rb +2 -2
  30. data/processor/command/exit.rb +12 -9
  31. data/processor/command/finish.rb +25 -23
  32. data/processor/command/frame.rb +30 -26
  33. data/processor/command/help.rb +203 -185
  34. data/processor/command/help/{command.txt → command.md} +21 -18
  35. data/processor/command/help/examples.md +20 -0
  36. data/processor/command/help/filename.md +46 -0
  37. data/processor/command/help/location.md +34 -0
  38. data/processor/command/help/suffixes.md +19 -0
  39. data/processor/command/info.rb +6 -4
  40. data/processor/command/info_subcmd/breakpoints.rb +13 -13
  41. data/processor/command/info_subcmd/files.rb +35 -31
  42. data/processor/command/info_subcmd/frame.rb +82 -33
  43. data/processor/command/info_subcmd/macro.rb +1 -1
  44. data/processor/command/info_subcmd/program.rb +8 -5
  45. data/processor/command/info_subcmd/registers.rb +15 -13
  46. data/processor/command/kill.rb +23 -17
  47. data/processor/command/list.rb +63 -56
  48. data/processor/command/macro.rb +45 -28
  49. data/processor/command/next.rb +29 -23
  50. data/processor/command/pp.rb +11 -9
  51. data/processor/command/pr.rb +10 -8
  52. data/processor/command/ps.rb +5 -5
  53. data/processor/command/quit.rb +24 -17
  54. data/processor/command/raise.rb +6 -6
  55. data/processor/command/reload.rb +9 -2
  56. data/processor/command/reload_subcmd/command.rb +4 -4
  57. data/processor/command/restart.rb +9 -4
  58. data/processor/command/save.rb +9 -9
  59. data/processor/command/server.rb +18 -17
  60. data/processor/command/set.rb +8 -6
  61. data/processor/command/set_subcmd/confirm.rb +15 -2
  62. data/processor/command/set_subcmd/different.rb +7 -5
  63. data/processor/command/set_subcmd/highlight.rb +14 -3
  64. data/processor/command/set_subcmd/pc.rb +62 -0
  65. data/processor/command/set_subcmd/sp.rb +8 -2
  66. data/processor/command/shell.rb +25 -23
  67. data/processor/command/show.rb +9 -7
  68. data/processor/command/show_subcmd/confirm.rb +12 -1
  69. data/processor/command/show_subcmd/highlight.rb +13 -3
  70. data/processor/command/source.rb +27 -26
  71. data/processor/command/step.rb +52 -43
  72. data/processor/command/tbreak.rb +9 -4
  73. data/processor/command/unalias.rb +9 -7
  74. data/processor/command/undisplay.rb +11 -7
  75. data/processor/command/up.rb +18 -13
  76. data/processor/command/watchg.rb +20 -17
  77. data/processor/complete.rb +120 -0
  78. data/processor/default.rb +47 -43
  79. data/processor/list.rb +23 -6
  80. data/processor/load_cmds.rb +25 -105
  81. data/processor/location.rb +104 -96
  82. data/processor/mock.rb +12 -12
  83. data/processor/msg.rb +61 -52
  84. data/processor/validate.rb +36 -27
  85. data/test/data/fname-with-blank.right +0 -1
  86. data/test/data/trace-mingw.right +28 -0
  87. data/test/data/trace.right +0 -2
  88. data/test/functional/test-raise.rb +3 -0
  89. data/test/integration/helper.rb +16 -16
  90. data/test/integration/test-debugger-stop.rb +8 -2
  91. data/test/integration/test-quit.rb +16 -15
  92. data/test/integration/test-trace.rb +19 -10
  93. data/test/unit/cmd-helper.rb +4 -1
  94. data/test/unit/test-app-complete.rb +3 -1
  95. data/test/unit/test-app-options.rb +7 -1
  96. data/test/unit/test-app-run.rb +9 -1
  97. data/test/unit/test-cmd-alias.rb +1 -1
  98. data/test/unit/test-cmd-edit.rb +2 -0
  99. data/test/unit/test-cmd-help.rb +10 -5
  100. data/test/unit/test-cmd-parse_list_cmd.rb +3 -3
  101. data/test/unit/test-completion.rb +2 -2
  102. data/test/unit/test-proc-default.rb +34 -0
  103. data/trepanning.gemspec +15 -14
  104. metadata +70 -44
  105. data/README.textile +0 -50
  106. data/processor/command/help/examples.txt +0 -16
  107. data/processor/command/help/filename.txt +0 -40
  108. data/processor/command/help/location.txt +0 -37
  109. data/processor/command/help/suffixes.txt +0 -17
  110. data/processor/command/info_subcmd/registers_subcmd/dfp.rb +0 -28
  111. data/processor/command/info_subcmd/registers_subcmd/lfp.rb +0 -47
  112. data/processor/command/nocache.rb +0 -32
  113. data/processor/command/parsetree.rb +0 -56
@@ -1,18 +1,18 @@
1
- # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
2
- # The main "driver" class for a command processor. Other parts of the
1
+ # Copyright (C) 2010-2011, 2013, 2015 Rocky Bernstein <rockyb@rubyforge.net>
2
+ # The main "driver" class for a command processor. Other parts of the
3
3
  # command class and debugger command objects are pulled in from here.
4
4
 
5
- %w(default breakpoint display eventbuf eval load_cmds location frame hook msg
6
- running validate).each do
5
+ %w(default breakpoint complete display eventbuf eval load_cmds location
6
+ frame hook msg running validate).each do
7
7
  |mod_str|
8
8
  require_relative "processor/#{mod_str}"
9
9
  end
10
10
  require_relative 'app/brkptmgr'
11
11
 
12
12
  class Trepan
13
- class CmdProcessor < VirtualCmdProcessor
13
+ class CmdProcessor < VirtualCmdProcessor
14
14
 
15
- # SEE ALSO attr's in require_relative's of loop above.
15
+ # SEE ALSO attr's in require_relative's of loop above.
16
16
 
17
17
  attr_reader :cmd_argstr # Current command args, a String.
18
18
  # This is current_command with the command
@@ -25,7 +25,7 @@ class Trepan
25
25
  # Trepan::Core instance)
26
26
  attr_accessor :debug_nest # Number of nested debugs. Used in showing
27
27
  # prompt.
28
- attr_accessor :different_pos # Same type as settings[:different]
28
+ attr_accessor :different_pos # Same type as settings[:different]
29
29
  # this is the temporary value for the
30
30
  # next stop while settings is the default
31
31
  # value to use.
@@ -34,8 +34,8 @@ class Trepan
34
34
  # Trepan::Core instance)
35
35
  attr_reader :interfaces # Array of all interfaces
36
36
  attr_accessor :leave_cmd_loop # Commands set this to signal to leave
37
- # the command loop (which often continues to
38
- # run the debugged program).
37
+ # the command loop (which often continues to
38
+ # run the debugged program).
39
39
  attr_accessor :line_no # Last line shown in "list" command
40
40
  attr_accessor :next_level # Fixnum. frame.stack_size has to
41
41
  # be <= than this. If next'ing,
@@ -43,17 +43,17 @@ class Trepan
43
43
  attr_accessor :next_thread # Thread. If non-nil then in
44
44
  # stepping the thread has to be
45
45
  # this thread.
46
- attr_accessor :pass_exception # Pass an exception back
46
+ attr_accessor :pass_exception # Pass an exception back
47
47
  attr_accessor :prompt # String print before requesting input
48
48
  attr_reader :settings # Hash[:symbol] of command
49
49
  # processor settings
50
-
50
+
51
51
  attr_accessor :traced_vars # list of traced global variables
52
52
 
53
53
  # The following are used in to force stopping at a different line
54
54
  # number. FIXME: could generalize to a position object.
55
55
  attr_accessor :last_pos # Last position. 6-Tuple: of
56
- # [location, container, stack_size,
56
+ # [location, container, stack_size,
57
57
  # current_thread, pc_offset]
58
58
 
59
59
 
@@ -78,18 +78,18 @@ class Trepan
78
78
 
79
79
  # FIXME: Rework using a general "set substitute file" command and
80
80
  # a global default profile which gets read.
81
- file = File.expand_path(File.join(File.dirname(__FILE__),
81
+ file = File.expand_path(File.join(File.dirname(__FILE__),
82
82
  %w(data prelude.rb)))
83
83
  LineCache::cache(file)
84
84
  LineCache::remap_file('<internal:prelude>', file)
85
- file = File.expand_path(File.join(File.dirname(__FILE__),
85
+ file = File.expand_path(File.join(File.dirname(__FILE__),
86
86
  %w(data custom_require.rb)))
87
87
  LineCache::cache(file)
88
- LineCache::remap_file('<internal:lib/rubygems/custom_require>',
88
+ LineCache::remap_file('<internal:lib/rubygems/custom_require>',
89
89
  file)
90
90
 
91
91
  # Start with empty thread and frame info.
92
- frame_teardown
92
+ frame_teardown
93
93
 
94
94
  # Run initialization routines for each of the "submodule"s.
95
95
  # load_cmds has to come first.
@@ -98,14 +98,12 @@ class Trepan
98
98
  self.send("#{submod}_initialize")
99
99
  end
100
100
  hook_initialize(commands)
101
- unconditional_prehooks.insert_if_new(-1, *trace_hook) if
101
+ unconditional_prehooks.insert_if_new(-1, *trace_hook) if
102
102
  @settings[:traceprint]
103
-
104
- # FIXME: run start file and start commands.
105
103
  end
106
104
 
107
105
  def compute_prompt
108
- thread_str =
106
+ thread_str =
109
107
  if 1 == Thread.list.size
110
108
  ''
111
109
  elsif Thread.current == Thread.main
@@ -113,13 +111,15 @@ class Trepan
113
111
  else
114
112
  "@#{Thread.current.object_id}"
115
113
  end
116
- "%s#{settings[:prompt]}%s%s: " %
114
+ "%s#{settings[:prompt]}%s%s: " %
117
115
  ['(' * @debug_nest, thread_str, ')' * @debug_nest]
118
-
116
+
119
117
  end
120
118
 
121
119
  def finalize
122
120
  breakpoint_finalize
121
+ msg "%sThat's all, folks..." %
122
+ (defined?(Trepan::PROGRAM) ? "#{Trepan::PROGRAM}: " : '')
123
123
  end
124
124
 
125
125
  # Check that we meed the criteria that cmd specifies it needs
@@ -128,13 +128,13 @@ class Trepan
128
128
  # Check we have frame is not null
129
129
  min_args = cmd.class.const_get(:MIN_ARGS)
130
130
  if nargs < min_args
131
- errmsg(("Command '%s' needs at least %d argument(s); " +
131
+ errmsg(("Command '%s' needs at least %d argument(s); " +
132
132
  "got %d.") % [name, min_args, nargs])
133
133
  return false
134
134
  end
135
135
  max_args = cmd.class.const_get(:MAX_ARGS)
136
136
  if max_args and nargs > max_args
137
- errmsg(("Command '%s' needs at most %d argument(s); " +
137
+ errmsg(("Command '%s' needs at most %d argument(s); " +
138
138
  "got %d.") % [name, max_args, nargs])
139
139
  return false
140
140
  end
@@ -158,14 +158,14 @@ class Trepan
158
158
  return true if @intf.input_eof? && intf_size == 1
159
159
  while intf_size > 1 || !@intf.input_eof?
160
160
  begin
161
- @current_command =
161
+ @current_command =
162
162
  if @cmd_queue.empty?
163
163
  # Leave trailing blanks on for the "complete" command
164
- read_command.chomp
164
+ read_command.chomp
165
165
  else
166
166
  @cmd_queue.shift
167
167
  end
168
- if @current_command.empty?
168
+ if @current_command.empty?
169
169
  next unless @last_command && intf.interactive?;
170
170
  end
171
171
  next if @current_command[0..0] == '#' # Skip comment lines
@@ -197,8 +197,8 @@ class Trepan
197
197
  frame_setup(frame)
198
198
 
199
199
  @unconditional_prehooks.run
200
-
201
- if 'trace-var' == @event
200
+
201
+ if 'trace-var' == @event
202
202
  variable_name, value = @core.hook_arg
203
203
  action = @traced_vars[variable_name]
204
204
  msg "trace: #{variable_name} = #{value}"
@@ -217,7 +217,7 @@ class Trepan
217
217
 
218
218
  if breakpoint?
219
219
  @last_pos = [@frame.source_container, frame_line,
220
- @stack_size, @current_thread, @event,
220
+ @stack_size, @current_thread, @event,
221
221
  @frame.pc_offset]
222
222
  elsif @event != 'post-mortem'
223
223
  return if stepping_skip? || @stack_size <= @hide_level
@@ -232,7 +232,7 @@ class Trepan
232
232
 
233
233
  print_location unless @settings[:traceprint]
234
234
  @eventbuf.add_mark if @settings[:tracebuffer]
235
-
235
+
236
236
  @cmdloop_prehooks.run
237
237
  while not @leave_cmd_loop do
238
238
  begin
@@ -256,7 +256,7 @@ class Trepan
256
256
  # Run current_command, a String. @last_command is set after the
257
257
  # command is run if it is a command.
258
258
  def run_command(current_command)
259
- eval_command =
259
+ eval_command =
260
260
  if current_command[0..0] == '!'
261
261
  current_command[0] = ''
262
262
  else
@@ -277,7 +277,7 @@ class Trepan
277
277
  break unless @macros.member?(macro_cmd_name)
278
278
  current_command = @macros[macro_cmd_name][0].call(*args[1..-1])
279
279
  msg current_command.inspect if settings[:debugmacro]
280
- if current_command.is_a?(Array) &&
280
+ if current_command.is_a?(Array) &&
281
281
  current_command.all? {|val| val.is_a?(String)}
282
282
  args = (first=current_command.shift).split
283
283
  @cmd_queue += current_command
@@ -292,21 +292,21 @@ class Trepan
292
292
  end
293
293
 
294
294
  @cmd_name = args[0]
295
- run_cmd_name =
295
+ run_cmd_name =
296
296
  if @aliases.member?(@cmd_name)
297
- @aliases[@cmd_name]
297
+ @aliases[@cmd_name]
298
298
  else
299
299
  @cmd_name
300
300
  end
301
-
301
+
302
302
  run_cmd_name = uniq_abbrev(@commands.keys, run_cmd_name) if
303
303
  !@commands.member?(run_cmd_name) && @settings[:abbrev]
304
-
304
+
305
305
  if @commands.member?(run_cmd_name)
306
306
  cmd = @commands[run_cmd_name]
307
307
  if ok_for_running(cmd, run_cmd_name, args.size-1)
308
308
  @cmd_argstr = current_command[@cmd_name.size..-1].lstrip
309
- cmd.run(args)
309
+ cmd.run(args)
310
310
  @last_command = current_command
311
311
  end
312
312
  return false
@@ -329,7 +329,7 @@ class Trepan
329
329
 
330
330
  # Error message when a command doesn't exist
331
331
  def undefined_command(cmd_name)
332
- begin
332
+ begin
333
333
  errmsg('Undefined command: "%s". Try "help".' % cmd_name)
334
334
  rescue
335
335
  $stderr.puts 'Undefined command: "%s". Try "help".' % cmd_name
@@ -381,7 +381,7 @@ if __FILE__ == $0
381
381
  end
382
382
  $input = ['1+2']
383
383
  dbg.core.processor.process_command_and_quit?
384
- $input = ['!s = 5'] # ! means eval line
384
+ $input = ['!s = 5'] # ! means eval line
385
385
  dbg.core.processor.process_command_and_quit?
386
386
  end
387
387
  end
@@ -2,7 +2,7 @@
2
2
  # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  # Base class of all commands. Code common to all commands is here.
4
4
  # Note: don't end classname with Command (capital C) since main
5
- # will think this a command name like QuitCommand
5
+ # will think this a command name like QuitCommand
6
6
  require 'columnize'
7
7
  require_relative '../app/complete'
8
8
 
@@ -30,7 +30,7 @@ class Trepan
30
30
  # List commands arranged in an aligned columns
31
31
  def columnize_commands(commands)
32
32
  width = settings[:maxwidth]
33
- Columnize::columnize(commands, width, ' ' * 4,
33
+ Columnize::columnize(commands, width, ' ' * 4,
34
34
  true, true, ' ' * 2).chomp
35
35
  end
36
36
 
@@ -52,7 +52,7 @@ class Trepan
52
52
  end
53
53
 
54
54
  def obj_const(obj, name)
55
- obj.class.const_get(name)
55
+ obj.class.const_get(name)
56
56
  end
57
57
 
58
58
  # Convenience short-hand for @proc.msg
@@ -92,23 +92,27 @@ class Trepan
92
92
  @proc.section(message, opts)
93
93
  end
94
94
 
95
+ def markdown(message, opts={})
96
+ @proc.markdown(message, opts)
97
+ end
98
+
95
99
  def settings
96
100
  @proc.settings
97
101
  end
98
102
 
99
103
  def short_help
100
- help_constant_sym = if self.class.constants.member?(:SHORT_HELP)
101
- :SHORT_HELP
104
+ help_constant_sym = if self.class.constants.member?(:SHORT_HELP)
105
+ :SHORT_HELP
102
106
  else :HELP
103
107
  end
104
108
  my_const(help_constant_sym)
105
109
  end
106
110
 
107
111
  # Define a method called 'complete' on the singleton class.
108
- def self.completion(ary)
109
- self.send(:define_method,
110
- :complete,
111
- Proc.new {|prefix|
112
+ def self.completion(ary)
113
+ self.send(:define_method,
114
+ :complete,
115
+ Proc.new {|prefix|
112
116
  Trepan::Complete.complete_token(ary, prefix) })
113
117
  end
114
118
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
1
+ # Copyright (C) 2010-2011, 2013, 2015 Rocky Bernstein <rockyb@rubyforge.net>
2
2
  require_relative '../command'
3
3
 
4
4
  class Trepan::Command::AliasCommand < Trepan::Command
@@ -6,31 +6,37 @@ class Trepan::Command::AliasCommand < Trepan::Command
6
6
  unless defined?(HELP)
7
7
  NAME = File.basename(__FILE__, '.rb')
8
8
  HELP = <<-HELP
9
- #{NAME} ALIAS COMMAND
9
+ **#{NAME}** *alias* *command*
10
10
 
11
- Add alias ALIAS for a debugger command COMMAND.
11
+ Add alias *alias* for a debugger command *command*.
12
12
 
13
13
  Add an alias when you want to use a command abbreviation for a command
14
- that would otherwise be ambigous. For example, by default we make 's'
15
- be an alias of 'step' to force it to be used. Without the alias, "s"
16
- might be "step", "show", or "set" among others
14
+ that would otherwise be ambigous. For example, by default we make `s`
15
+ be an alias of `step` to allow it to unambigously refer to that command.
17
16
 
18
- Example:
17
+ Without the alias, `s` might be mean `step`, `show`, or `set` among
18
+ others
19
19
 
20
- alias cat list # "cat rubyfile.rb" is the same as "list rubyfile.rb"
21
- alias s step # "s" is now an alias for "step".
22
- # The above examples done by default.
20
+ Examples:
21
+ --------
23
22
 
24
- See also 'unalias' and 'show #{NAME}'.
23
+ alias cat list # "cat rubyfile.rb" is the same as "list rubyfile.rb"
24
+ alias s step # "s" is now an alias for "step".
25
+ # The above example is done by default.
26
+
27
+ See also:
28
+ ---------
29
+
30
+ `unalias` and `show #{NAME}`.
25
31
  HELP
26
32
 
27
33
  CATEGORY = 'support'
28
34
  MAX_ARGS = 2 # Need at most this many
29
- NEED_STACK = true
35
+ NEED_STACK = false
30
36
  SHORT_HELP = 'Add an alias for a debugger command'
31
37
  end
32
-
33
- # Run command.
38
+
39
+ # Run command.
34
40
  def run(args)
35
41
  if args.size == 1
36
42
  @proc.commands['show'].run(%W(show #{NAME}))
@@ -42,7 +48,7 @@ See also 'unalias' and 'show #{NAME}'.
42
48
  if @proc.commands.member?(command)
43
49
  @proc.aliases[al] = command
44
50
  if old_command
45
- msg("Alias '#{al}' for command '#{command}' replaced old " +
51
+ msg("Alias '#{al}' for command '#{command}' replaced old " +
46
52
  "alias for '#{old_command}'.")
47
53
  else
48
54
  msg "New alias '#{al}' for command '#{command}' created."
@@ -1,26 +1,34 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
2
+ # Copyright (C) 2010-2011, 2015 Rocky Bernstein <rockyb@rubyforge.net>
3
3
  require_relative '../command'
4
4
  class Trepan::Command::BacktraceCommand < Trepan::Command
5
5
 
6
6
  unless defined?(HELP)
7
7
  NAME = File.basename(__FILE__, '.rb')
8
8
  HELP = <<-HELP
9
- #{NAME} [count]
9
+ **#{NAME}** [*count*]
10
10
 
11
11
  Print a stack trace, with the most recent frame at the top. With a
12
12
  positive number, print at most many entries. With a negative number
13
13
  print the top entries minus that number.
14
14
 
15
- An arrow indicates the 'current frame'. The current frame determines
16
- the context used for many debugger commands such as expression
17
- evaluation or source-line listing.
15
+ In the listing produced, an arrow `-->` indicates the 'current
16
+ frame'. The current frame determines the context used for many
17
+ debugger commands such as in expression evaluation, `eval`, or in
18
+ source-line listing, `list`, or the `edit` command.
18
19
 
19
20
  Examples:
20
- #{NAME} # Print a full stack trace
21
- #{NAME} 2 # Print only the top two entries
22
- #{NAME} -1 # Print a stack trace except the initial (least recent) call."
23
- HELP
21
+ ---------
22
+
23
+ #{NAME} # Print a full stack trace
24
+ #{NAME} 2 # Print only the top two entries
25
+ #{NAME} -1 # Print a stack trace except the initial (least recent) call."
26
+
27
+ See also:
28
+ ---------
29
+
30
+ `up`, `down`, `frame`.
31
+ HELP
24
32
 
25
33
  ALIASES = %w(bt where)
26
34
  CATEGORY = 'stack'
@@ -35,17 +43,17 @@ Examples:
35
43
  def complete(prefix)
36
44
  @proc.frame_complete(prefix, nil)
37
45
  end
38
-
46
+
39
47
  # This method runs the command
40
48
  def run(args)
41
49
  unless @proc.frame
42
50
  errmsg 'No frame.'
43
51
  return false
44
52
  end
45
- hide_level =
46
- if (!settings[:hidelevel] || settings[:hidelevel] < 0) &&
47
- @proc.hidelevels[Thread.current]
48
- @proc.hidelevels[Thread.current]
53
+ hide_level =
54
+ if (!settings[:hidelevel] || settings[:hidelevel] < 0) &&
55
+ @proc.hidelevels[Thread.current]
56
+ @proc.hidelevels[Thread.current]
49
57
  else settings[:hidelevel]
50
58
  end
51
59
  stack_size = @proc.top_frame.stack_size - hide_level
@@ -56,19 +64,19 @@ Examples:
56
64
  :maxwidth => settings[:maxwidth],
57
65
  :show_pc => settings[:show_pc]
58
66
  }
59
- opts[:count] =
67
+ opts[:count] =
60
68
  if args.size > 1
61
- opts[:maxstack] = @proc.get_int(args[1],
69
+ opts[:maxstack] = @proc.get_int(args[1],
62
70
  :cmdname => self.name,
63
71
  :max_value => stack_size)
64
72
  else
65
73
  stack_size
66
74
  end
67
75
  return false unless opts[:count]
68
- # FIXME: Fix Ruby so we don't need this workaround?
76
+ # FIXME: Fix Ruby so we don't need this workaround?
69
77
  # See also location.rb
70
- opts[:class] = @proc.core.hook_arg if
71
- 'CFUNC' == @proc.frame.type &&
78
+ opts[:class] = @proc.core.hook_arg if
79
+ 'CFUNC' == @proc.frame.type &&
72
80
  @proc.core.hook_arg && @proc.event != 'raise'
73
81
  print_stack_trace(@proc.top_frame, opts)
74
82
  end