byebug 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -150,38 +150,46 @@ module Byebug
150
150
 
151
151
  Subcommands =
152
152
  [
153
- ['annotate', 2, "Show annotation level",
154
- "0 == normal; 2 == output annotated suitably for use by programs that control
155
- byebug."],
153
+ ['annotate', 2, 'Show annotation level',
154
+ '0 == normal;' \
155
+ '2 == output annotated suitably for use by programs that control ' \
156
+ 'byebug.'],
156
157
  ['args', 2,
157
- "Show argument list to give program being debugged when it is started",
158
- "Follow this command with any number of args, to be passed to the program."],
159
- ['autoeval', 4, "Show if unrecognized command are evaluated"],
160
- ['autolist', 4, "Show if 'list' commands is run on breakpoints"],
161
- ['autoirb', 4, "Show if IRB is invoked on byebug stops"],
162
- ['autoreload', 4, "Show if source code is reloaded when changed"],
163
- ['basename', 1, "Show if basename used in reporting files"],
164
- ['callstyle', 2, "Show paramater style used showing call frames"],
165
- ['commands', 2, "Show the history of commands you typed",
166
- "You can supply a command number to start with."],
167
- ['forcestep', 1, "Show if sure 'next/step' forces move to a new line"],
168
- ['fullpath', 2, "Show if full file names are displayed in frames"],
169
- ['history', 2, "Generic command for showing command history parameters",
170
- "show history filename -- Show the filename in which to record the command history
171
- show history save -- Show saving of the history record on exit
172
- show history size -- Show the size of the command history"],
173
- ['keep-frame-bindings', 1, "Save frame binding on each call"],
174
- ['linetrace', 3, "Show line execution tracing"],
158
+ 'Show argument list to give to the program being debugged when it ' \
159
+ 'is started',
160
+ 'Follow this command with any number of args to be passed to the ' \
161
+ 'program.'],
162
+ ['autoeval', 4, 'Show whether unrecognized commands are evaluated'],
163
+ ['autolist', 4, 'Show whether "list" command is run on stopping'],
164
+ ['autoirb', 4, 'Show whether IRB is invoked on stopping'],
165
+ ['autoreload', 4, 'Show whether source code is reloaded when changed'],
166
+ ['basename', 1, 'Show whether basename is used when reporting files'],
167
+ ['callstyle', 2, 'Show paramater style used when showing call frames'],
168
+ ['commands', 2, 'Show the history of commands you typed',
169
+ 'You can supply a command number to start with.'],
170
+ ['forcestep', 1, 'Show whether "next/step" force to move onto a new ' \
171
+ 'line'],
172
+ ['fullpath', 2, 'Show whether full paths are displayed in frames'],
173
+ ['history', 2, 'Generic command to show command history parameters',
174
+ 'show history filename -- Show the filename in which to record the ' \
175
+ 'command history.' \
176
+ 'show history save -- Show whether history record should be saved ' \
177
+ 'on exit.' \
178
+ 'show history size -- Show the size of the command history.'],
179
+ ['keep-frame-bindings', 1, 'Save frame binding on each call'],
180
+ ['linetrace', 3, 'Show line execution tracing'],
175
181
  ['linetrace+', 10,
176
- "Show if consecutive lines should be different are shown in tracing"],
177
- ['listsize', 3, "Show number of source lines to list by default"],
178
- ['port', 3, "Show server port"],
182
+ 'Show whether different consecutive lines are shown in tracing'],
183
+ ['listsize', 3, 'Show number of source lines to list by default.'],
184
+ ['port', 3, 'Show server port'],
179
185
  ['post-mortem', 3,
180
- "Show whether we go into post-mortem debugging on an uncaught exception"],
186
+ 'Show whether we go into post-mortem debugging on an uncaught ' \
187
+ 'exception'],
181
188
  ['trace', 1,
182
- "Show if a stack trace is displayed when 'eval' raises exception"],
183
- ['version', 1, "Show byebug's version"],
184
- ['width', 1, "Show the number of characters byebug thinks are in a line"]
189
+ 'Show whether a stack trace is displayed when "eval" raises an ' \
190
+ 'exception'],
191
+ ['version', 1, 'Show byebug\'s version'],
192
+ ['width', 1, 'Show the number of characters per line for byebug']
185
193
  ].map do |name, min, short_help, long_help|
186
194
  SubcmdStruct.new(name, min, short_help, long_help)
187
195
  end unless defined?(Subcommands)
@@ -194,7 +202,7 @@ show history size -- Show the size of the command history"],
194
202
 
195
203
  def execute
196
204
  if not @match[1]
197
- print_subcommands
205
+ print_subcmds(Subcommands)
198
206
  else
199
207
  args = @match[1].split(/[ \t]+/)
200
208
  param = args.shift
@@ -213,20 +221,17 @@ show history size -- Show the size of the command history"],
213
221
  end
214
222
 
215
223
  def help(args)
224
+ # specific subcommand help
216
225
  if args[1]
217
- s = args[1]
218
- subcmd = Subcommands.find do |try_subcmd|
219
- (s.size >= try_subcmd.min) and
220
- (try_subcmd.name[0..s.size-1] == s)
221
- end
222
- if subcmd
223
- str = subcmd.short_help + '.'
224
- str += "\n" + subcmd.long_help if subcmd.long_help
225
- return str
226
- else
227
- return "Invalid 'show' subcommand '#{args[1]}'."
228
- end
226
+ subcmd = find(Subcommands, args[1])
227
+ return "Invalid \"show\" subcommand \"#{args[1]}\"." unless subcmd
228
+
229
+ str = subcmd.short_help + '.'
230
+ str += "\n" + subcmd.long_help if subcmd.long_help
231
+ return str
229
232
  end
233
+
234
+ # general help
230
235
  s = "
231
236
  Generic command for showing things about byebug.
232
237
 
@@ -12,29 +12,29 @@ module Byebug
12
12
  onoff = 'on' == @match[1]
13
13
  #if @match[2]
14
14
  Byebug.tracing = onoff
15
- print "Tracing is #{onoff ? 'on' : 'off'}"
15
+ print "Tracing is #{onoff ? 'on' : 'off'}\n"
16
16
  #else
17
17
  # Byebug.current_context.tracing = onoff
18
- # print "Tracing %s on current thread.\n" % (onoff ? 'on' : 'off')
18
+ # print "Tracing #{onoff ? 'on' : 'off'} on current thread.\n"
19
19
  #end
20
20
  elsif @match[1] =~ /var(?:iable)?/
21
21
  varname=@match[2]
22
22
  if debug_eval("defined?(#{varname})")
23
23
  if @match[3] && @match[3] !~ /(:?no)?stop/
24
- errmsg("expecting 'stop' or 'nostop'; got %s\n" % @match[3])
24
+ errmsg "expecting \"stop\" or \"nostop\"; got \"#{@match[3]}\"\n"
25
25
  else
26
26
  dbg_cmd = (@match[3] && (@match[3] !~ /nostop/)) ? 'byebug' : ''
27
27
  end
28
28
  eval("trace_var(:#{varname}) do |val|
29
- print \"traced variable #{varname} has value \#{val}\n\"
29
+ print \"traced variable \#{varname} has value \#{val}\n\"
30
30
  #{dbg_cmd}
31
31
  end")
32
32
  else
33
33
  errmsg "#{varname} is not a global variable.\n"
34
34
  end
35
35
  else
36
- errmsg("expecting 'on', 'off', 'var' or 'variable'; got: %s\n" %
37
- @match[1])
36
+ errmsg "expecting \"on\", \"off\", \"var\" or \"variable\"; got: " \
37
+ "\"#{@match[1]}\"\n"
38
38
  end
39
39
  end
40
40
 
@@ -29,8 +29,7 @@ module Byebug
29
29
  end
30
30
 
31
31
  def at_tracing(file, line)
32
- handler.at_tracing(self, file, line) if
33
- File.identical?(file, Byebug::PROG_SCRIPT)
32
+ handler.at_tracing(self, file, line)
34
33
  end
35
34
 
36
35
  def at_line(file, line)
@@ -125,7 +125,7 @@ module Byebug
125
125
  if Byebug.annotate.to_i > 2
126
126
  print afmt("source #{file}:#{line}")
127
127
  end
128
- print "Stopped at breakpoint %d at %s:%s\n", n, file, line
128
+ print "Stopped by breakpoint %d at %s:%s\n", n, file, line
129
129
  end
130
130
  protect :at_breakpoint
131
131
 
@@ -147,14 +147,14 @@ module Byebug
147
147
 
148
148
  def at_tracing(context, file, line)
149
149
  # Don't trace ourselves
150
- return if defined?(Byebug::RDEBUG_FILE) && Byebug::RDEBUG_FILE == file
150
+ return if defined?(Byebug::BYEBUG_BIN) && Byebug::BYEBUG_BIN == file
151
151
 
152
152
  file = CommandProcessor.canonic_file(file)
153
153
  tracing_plus = Command.settings[:tracing_plus]
154
- if file != @last_file || line != @last_line || tracing_plus
154
+ if file != @last_file || line != @last_line || tracing_plus == false
155
155
  @last_file = file
156
156
  @last_line = line
157
- print "Tracing: #{file}:#{line} #{Byebug.line_at(file, line)}"
157
+ print "Tracing: #{file}:#{line} #{Byebug.line_at(file, line)}\n"
158
158
  end
159
159
  always_run(context, file, line, 2)
160
160
  end
@@ -166,8 +166,7 @@ module Byebug
166
166
  protect :at_line
167
167
 
168
168
  def at_return(context, file, line)
169
- context.stop_frame = -1
170
- process_commands(context, file, line)
169
+ #context.stop_frame = -1
171
170
  end
172
171
 
173
172
  private
@@ -244,7 +243,11 @@ module Byebug
244
243
  end
245
244
 
246
245
  preloop(commands, context)
247
- CommandProcessor.print_location_and_text(file, line)
246
+
247
+ if not Command.settings[:autolist]
248
+ CommandProcessor.print_location_and_text(file, line)
249
+ end
250
+
248
251
  while !state.proceed?
249
252
  input = if @interface.command_queue.empty?
250
253
  @interface.read_command(prompt(context))
@@ -1,4 +1,4 @@
1
1
  module Byebug
2
2
  # Current version of the gem
3
- VERSION = '1.0.1'
3
+ VERSION = '1.0.2'
4
4
  end
@@ -7,9 +7,9 @@
7
7
 
8
8
  @set txicodequoteundirected
9
9
  @set txicodequotebacktick
10
- @set BYEBUG_VERSION 0.0.1
11
- @set EDITION 0.0.1
12
- @set UPDATED March-2013
10
+ @set BYEBUG_VERSION 1.0.1
11
+ @set EDITION 1.0.1
12
+ @set UPDATED April-2013
13
13
 
14
14
  @macro Example {}
15
15
  @iftex
@@ -74,8 +74,7 @@
74
74
  @node Top, Summary, (dir), (dir)
75
75
  @top Debugging with byebug
76
76
 
77
- This file describes Byebug, a Ruby 2.0 debugger,
78
- version @value{BYEBUG_VERSION}
77
+ This file describes Byebug, a Ruby 2.0 debugger, version @value{BYEBUG_VERSION}
79
78
 
80
79
  This is the @value{EDITION} Edition, @value{UPDATED}
81
80
  @c Copyleft (U+0254) 2013
@@ -124,8 +123,8 @@ Change things in your script, so you can experiment with correcting the effects
124
123
  one bug and go on to learn about another.
125
124
  @end itemize
126
125
 
127
- Although you can use @value{ttbyebug} to invoke your Ruby programs via a debugger
128
- at the outset, there are other ways to use and enter the debugger
126
+ Although you can use @value{byebug} to invoke your Ruby programs via a debugger
127
+ at the outset, there are other ways to use and enter the debugger.
129
128
 
130
129
  @menu
131
130
  * First Sample Session:: A Simple Sample @code{byebug} session
@@ -174,7 +173,7 @@ triangle.rb:4 def hanoi(n,a,b,c)
174
173
  [9, 18] in ./triangle.rb
175
174
  9 tri
176
175
  10 end
177
- 11
176
+ 11
178
177
  12 t = triangle(3)
179
178
  13 puts t
180
179
  (byebug:1) @b{list 1,100}
@@ -189,10 +188,10 @@ triangle.rb:4 def hanoi(n,a,b,c)
189
188
  8 end
190
189
  9 tri
191
190
  10 end
192
- 11
191
+ 11
193
192
  12 t = triangle(3)
194
193
  13 puts t
195
- (byebug:1)
194
+ (byebug:1)
196
195
  @end smallexample
197
196
 
198
197
  @noindent
@@ -298,9 +297,9 @@ Tracing(1):triangle.rb:9 tri
298
297
  6
299
298
  Tracing(1):triangle.rb:13 puts t
300
299
  1: tri =
301
- 2: i =
300
+ 2: i =
302
301
  1: tri =
303
- 2: i =
302
+ 2: i =
304
303
  triangle.rb:13
305
304
  puts t
306
305
  (byebug:1) @b{quit}
@@ -375,7 +374,7 @@ see what private methods we can call before running @code{def hanoi}
375
374
  (byebug:1) @b{set autoeval on}
376
375
  autoeval is on.
377
376
  (byebug:1) @b{private_methods}
378
- [:require_relative, :Digest, :default_src_encoding, :debug_program, ...
377
+ [:require_relative, :Digest, :default_src_encoding, :debug_program, ...
379
378
  @end smallexample
380
379
 
381
380
  The @code{set autoeval} (@pxref{Autoeval}) command causes any commands
@@ -394,26 +393,26 @@ sort and put into columns lists like this using the print command, @code{ps}.
394
393
 
395
394
  @smallexample
396
395
  (byebug:1) @b{ps private_methods}
397
- Array debug_program p spawn
398
- Complex default_src_encoding pp sprintf
399
- Digest eval print srand
400
- Float exec printf syscall
401
- Integer exit proc system
402
- Pathname exit! process_options test
403
- Rational fail putc throw
404
- String fork puts trace_var
405
- __callee__ format raise trap
406
- __method__ gem rand untrace_var
407
- ` gets readline warn
408
- abort global_variables readlines whence_file
409
- at_exit initialize remove_instance_variable y
410
- autoload initialize_copy require
411
- autoload? iterator? require_relative
412
- binding lambda select
413
- block_given? load set_trace_func
414
- caller local_variables singleton_method_added
415
- catch loop singleton_method_removed
416
- dbg_print method_missing singleton_method_undefined
396
+ Array debug_program p spawn
397
+ Complex default_src_encoding pp sprintf
398
+ Digest eval print srand
399
+ Float exec printf syscall
400
+ Integer exit proc system
401
+ Pathname exit! process_options test
402
+ Rational fail putc throw
403
+ String fork puts trace_var
404
+ __callee__ format raise trap
405
+ __method__ gem rand untrace_var
406
+ ` gets readline warn
407
+ abort global_variables readlines whence_file
408
+ at_exit initialize remove_instance_variable y
409
+ autoload initialize_copy require
410
+ autoload? iterator? require_relative
411
+ binding lambda select
412
+ block_given? load set_trace_func
413
+ caller local_variables singleton_method_added
414
+ catch loop singleton_method_removed
415
+ dbg_print method_missing singleton_method_undefined
417
416
  dbg_puts open sleep
418
417
  @end smallexample
419
418
 
@@ -477,47 +476,44 @@ Breakpoint 1 at hanoi.rb:4
477
476
  1: n = 2
478
477
  3: a.inspect = :a
479
478
  4: b.inspect = :c
480
- ./hanoi.rb:4
479
+ ./hanoi.rb:4
481
480
  if n-1 > 0
482
481
  (byebug:1) @b{c}
483
482
  Breakpoint 1 at hanoi.rb:4
484
483
  1: n = 1
485
484
  3: a.inspect = :a
486
485
  4: b.inspect = :b
487
- ./hanoi.rb:4
486
+ ./hanoi.rb:4
488
487
  if n-1 > 0
489
488
  (byebug:1) @b{where}
490
- --> #0 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at line hanoi.rb:4
491
- #1 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at line hanoi.rb:5
492
- #2 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at line hanoi.rb:5
493
- #3 at line hanoi.rb:35
494
- (byebug:1)
495
- @end smallexample
496
-
497
- In the above we added a new command, @code{break}
498
- (@pxref{Breakpoints}) which indicates to go into byebug just
499
- before that line of code is run. And @code{continue} resumes
500
- execution. Notice the difference between @code{display a} and
501
- @code{display a.inspect}. An implied string conversion is performed on
502
- the expression after it is evaluated. To remove a display expression
503
- we used @code{undisplay} is used. If we give a display number, just
504
- that display expression is removed.
505
-
506
- Above we also used a new command @code{where} (@pxref{Backtrace} to
507
- show the call stack. In the above situation, starting from the bottom
508
- line we see we called the hanoi from line 35 of the file
509
- @code{hanoi.rb} and the hanoi method called itself two more times at
510
- line 5.
511
-
512
- In the call stack we show the file line position in the same format
513
- when we stop at a line. Also we see the names of the parameters and
514
- the types that those parameters @emph{currently} have. It's possible
515
- that when the program was called the parameter had a different type,
516
- since the types of variables can change dynamically. You alter the
517
- style of what to show in the trace (@pxref{Callstyle}).
518
-
519
- Let's explore a little more. Now were were we?
489
+ --> #0 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at hanoi.rb:4
490
+ #1 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at hanoi.rb:5
491
+ #2 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at hanoi.rb:5
492
+ #3 at hanoi.rb:35
493
+ (byebug:1)
494
+ @end smallexample
495
+
496
+ In the above we added a new command, @code{break} (@pxref{Breakpoints}) which
497
+ indicates to go into byebug just before that line of code is run. And
498
+ @code{continue} resumes execution. Notice the difference between
499
+ @code{display a} and @code{display a.inspect}. An implied string conversion is
500
+ performed on the expression after it is evaluated. To remove a display
501
+ expression @code{undisplay} is used. If we give a display number, just that
502
+ display expression is removed.
520
503
 
504
+ Above we also used a new command @code{where} (@pxref{Backtrace} to show the
505
+ call stack. In the above situation, starting from the bottom line we see we
506
+ called the hanoi from line 35 of the file @code{hanoi.rb} and the hanoi method
507
+ called itself two more times at line 5.
508
+
509
+ In the call stack we show the file line position in the same format we use when
510
+ we stop at a line. Also we see the names of the parameters and the types that
511
+ those parameters @emph{currently} have. It's possible that when the program was
512
+ called the parameter had a different type, since the types of variables can
513
+ change dynamically. You can alter the style of what to show in the trace
514
+ (@pxref{Callstyle}).
515
+
516
+ Let's explore a little more. Now where were we?
521
517
  @smallexample
522
518
  (byebug:1) @b{list}
523
519
  1 #!/usr/bin/ruby
@@ -533,72 +529,67 @@ Clear all expressions? (y/n) @b{y}
533
529
  (byebug:1) @b{i_args}
534
530
  NameError Exception: undefined local variable or method `i_args' for main:Object
535
531
  (byebug:1) @b{frame -1}
536
- #3 at line hanoi.rb:35
532
+ #3 at hanoi.rb:35
537
533
  (byebug:1) @b{i_args}
538
534
  1
539
535
  (byebug:1) @b{p n}
540
536
  3
541
537
  (byebug:1) @b{down 2}
542
- #2 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at line hanoi.rb:5
538
+ #2 Object.hanoi(n#Fixnum, a#Symbol, b#Symbol, c#Symbol) at hanoi.rb:5
543
539
  (byebug:1) @b{p n}
544
540
  2
545
541
  @end smallexample
546
542
 
547
- Notice in the above to get the value of variable @code{n}, I have to
548
- use a print command like @code{p n}; If I entered just @code{n}, that
549
- would be taken to mean byebug command ``next''. In the current
550
- scope, variable @code{i_args} is not defined. However I can change to
551
- the top-most frame by using the @code{frame} command. Just as with
552
- arrays, -1 means the last one. Alternatively using frame number 3
553
- would have been the same thing; so would issuing @code{up 3}.
543
+ Notice in the above to get the value of variable @code{n} I had to use a print
544
+ command like @code{p n}; If I entered just @code{n}, that would be taken to mean
545
+ byebug command ``next''. In the current scope, variable @code{i_args} is not
546
+ defined. However I can change to the top-most frame by using the @code{frame}
547
+ command. Just as with arrays, -1 means the last one. Alternatively using frame
548
+ number 3 would have been the same thing; so would issuing @code{up 3}.
554
549
 
555
- Note that in the outside frame 3, the value of @code{i_args} can be
556
- shown. Also note that the value of variable @code{n} is different.
550
+ Note that in the outside frame 3, the value of @code{i_args} can be shown. Also
551
+ note that the value of variable @code{n} is different.
557
552
 
558
553
  @node Unit Testing Session
559
- @section Using byebug in unit testing (@code{byebug/byebug}, @code{Byebug.start})
554
+ @section Using byebug in unit testing (@code{byebug}, @code{Byebug.start})
560
555
 
561
- In the previous sessions we've been calling byebug right at the
562
- outset. I confess that this mode of operation is usually not how I use
563
- byebug.
556
+ In the previous sessions we've been calling byebug right at the outset. I
557
+ confess that this mode of operation is usually not how I use byebug.
564
558
 
565
559
  There are a number of situations where calling byebug at the outset is
566
560
  impractical for a couple of reasons.
567
561
 
568
562
  @enumerate
569
- @item
570
- The byebug just doesn't work when run at the outset. By necessity
571
- any debugging changes to the behavior or the program in slight and
572
- subtle ways, and sometimes this can hinder finding bugs.
573
- @item
574
- There's a lot of code which that needs to get run before the part you
575
- want to inspect. Running this code takes time and you don't want the
576
- overhead of byebug.
563
+ @item
564
+ byebug just doesn't work when run at the outset. By necessity any debugging
565
+ changes the behavior or the program in slight and subtle ways, and sometimes
566
+ this can hinder finding bugs.
567
+ @item
568
+ There's a lot of code that needs to be run before the part you want to inspect.
569
+ Running this code takes time and you don't want the overhead of byebug.
577
570
  @end enumerate
578
571
 
579
- In this section we'll show how to enter the code in the middle
580
- of your program, while delving more into byebug operation.
581
-
582
- In this section we will also use unit testing. Using unit tests will
583
- greatly reduce the amount of debugging needed, while at the same time,
584
- will increase the quality of your program.
585
-
586
- What we'll do is take the @code{triangle} code from the first session
587
- and write a unit test for that. In a sense we did write a mini-test
588
- for the program which was basically the last line where we printed the
589
- value of triangle(3). This test however wasn't automated: the
590
- implication is that someone would look at the output and verify that
591
- what was printed is what was expected.
592
-
593
- And before we can turn that into something that can be
594
- @code{required}, we probably want to remove that output. However I
595
- like to keep in that line so that when I look at the file, I have an
596
- example of how to run it. Therefore we will conditionally run this
597
- line if that file is invoked directly, but skip it if it is
598
- not.@footnote{@code{byebug} resets @code{$0} to try to make things
599
- like this work.}
600
- @smallexample
601
- if __FILE__ == $0
572
+ In this section we'll show how to enter the code in the middle of your program,
573
+ while delving more into byebug's operation.
574
+
575
+ In this section we will also use unit testing. Using unit tests will greatly
576
+ reduce the amount of debugging needed, while at the same time, will increase the
577
+ quality of your program.
578
+
579
+ What we'll do is take the @code{triangle} code from the first session and write
580
+ a unit test for that. In a sense we did write a minitest for the program which
581
+ was basically the last line where we printed the value of triangle(3). This test
582
+ however wasn't automated: the implication is that someone would look at the
583
+ output and verify that what was printed is what was expected.
584
+
585
+ Before we can turn that into something that can be @code{required}, we probably
586
+ want to remove that output. However I like to keep in that line so that when I
587
+ look at the file, I have an example of how to run it. Therefore we will
588
+ conditionally run this line if that file is invoked directly, but skip it if it
589
+ is not@footnote{@code{byebug} resets @code{$0} to try to make things like this
590
+ work.}.
591
+ @smallexample
592
+ if __FILE__ == $0
602
593
  t = triangle(3)
603
594
  puts t
604
595
  end
@@ -606,10 +597,9 @@ like this work.}
606
597
 
607
598
  Let's call this file @code{tri2.rb}.
608
599
 
609
- Okay, we're now ready to write our unit test. We'll use
610
- @code{"test/unit"} which comes with the standard Ruby distribution.
611
- Here's the test code; it should be in the same directory as tri2.rb.
612
-
600
+ Okay, we're now ready to write our unit test. We'll use @code{"test/unit"} which
601
+ comes with the standard Ruby distribution. Here's the test code; it should be
602
+ in the same directory as tri2.rb.
613
603
  @smallexample
614
604
  #!/usr/bin/env ruby
615
605
  require 'test/unit'
@@ -617,8 +607,8 @@ Here's the test code; it should be in the same directory as tri2.rb.
617
607
 
618
608
  class TestTri < Test::Unit::TestCase
619
609
  def test_basic
620
- solutions = []
621
- 0.upto(5) do |i|
610
+ solutions = []
611
+ 0.upto(5) do |i|
622
612
  solutions << triangle(i)
623
613
  end
624
614
  assert_equal([0, 1, 3, 6, 10, 15], solutions,
@@ -627,17 +617,15 @@ Here's the test code; it should be in the same directory as tri2.rb.
627
617
  end
628
618
  @end smallexample
629
619
 
630
- If you run it will work. However if you run @code{byebug} initially,
631
- you will not get into the test, because @code{test/unit} wants to be
632
- the main program. So here is a situation where one may need to modify
633
- the program to add an explicit @emph{entry} into the
634
- byebug.@footnote{For some versions of rake and @code{byebug} you can
635
- in fact set a breakpoint after running @code{byebug}
636
- initially. Personally though I find it much simpler and more reliable
637
- to modify the code as shown here.}
620
+ If you run it, it will work. However if you run @code{byebug} initially, you
621
+ will not get into the test, because @code{test/unit} wants to be the main
622
+ program. So here is a situation where one may need to modify the program to add
623
+ an explicit @emph{entry} into byebug. @footnote{For some versions of rake and
624
+ @code{byebug} you can in fact set a breakpoint after running @code{byebug}
625
+ initially. Personally though I find it much simpler and more reliable to modify
626
+ the code as shown here.}
638
627
 
639
- One way to do this is to add the following before the place you want
640
- to stop:
628
+ One way to do this is to add the following before the place you want to stop:
641
629
  @smallexample
642
630
  require 'byebug'
643
631
  byebug
@@ -645,7 +633,7 @@ to stop:
645
633
 
646
634
  Let's add this code just after entering @code{test_basic}:
647
635
  @smallexample
648
- ...
636
+ ...
649
637
  def test_basic
650
638
  @b{require "byebug"}
651
639
  @b{byebug}
@@ -662,31 +650,29 @@ Now we run the program..
662
650
  solutions = []
663
651
  (byebug:1)
664
652
  @end smallexample
665
- and we see that we are stopped at line 9 just before the
666
- initialization of the list @code{solutions}.
653
+ and we see that we are stopped at line 9 just before the initialization of the
654
+ list @code{solutions}.
667
655
 
668
656
  Now let's see where we are...
669
-
670
657
  @smallexample
671
658
  (byebug:1) @b{where}
672
- --> #0 TestTri.test_basic at line /home/rocky/ruby/test-tri.rb:9
673
- (byebug:1)
659
+ --> #0 TestTri.test_basic at /home/rocky/ruby/test-tri.rb:9
660
+ (byebug:1)
674
661
  @end smallexample
675
662
 
676
- Something seems wrong here; @code{TestTri.test_basic} indicates that
677
- we are in class @code{TestTri} in method @code{test_basic}. However we
678
- don't see the call to this like we did in the last example when we
679
- used the @code{where} command. This is because byebug really
680
- didn't spring into existence until after we already entered that
681
- method, and Ruby doesn't keep call stack information around in a
682
- way that will give the information we show when running @code{where}.
663
+ Something seems wrong here; @code{TestTri.test_basic} indicates that we are in
664
+ class @code{TestTri} in method @code{test_basic}. However we don't see the call
665
+ to this like we did in the last example when we used the @code{where} command.
666
+ This is because byebug really didn't spring into existence until after we
667
+ already had entered that method, and Ruby doesn't keep call stack information
668
+ around in a way that would give the information we show when running
669
+ @code{where}.
683
670
 
684
- If we want call stack information, we have to turn call-stack tracking
685
- on @emph{beforehand}. This is done by adding @code{Byebug.start}.
686
-
687
- Here's what our test program looks like so after we modify it to start
688
- tracking calls from the outset
671
+ If we want call stack information, we have to turn call-stack tracking on
672
+ @emph{beforehand}. This is done by adding @code{Byebug.start}.
689
673
 
674
+ Here's what our test program looks like so after we modify it to start tracking
675
+ calls from the outset
690
676
  @smallexample
691
677
  #!/usr/bin/env ruby
692
678
  require 'test/unit'
@@ -715,47 +701,44 @@ Started
715
701
  test-tri2.rb:11
716
702
  solutions = []
717
703
  (byebug:1) @b{where}
718
- --> #0 TestTri.test_basic at line test-tri2.rb:11
719
- #1 MiniTest::Unit::TestCase.run(runner#MiniTest::Unit)
720
- at line /usr/local/lib/ruby/1.9.1/minitest/unit.rb:458
721
- #2 MiniTest::Unit.run_test_suites
722
- at line /usr/local/lib/ruby/1.9.1/minitest/unit.rb:426
723
- #3 MiniTest::Unit.run
724
- at line /usr/local/lib/ruby/1.9.1/minitest/unit.rb:393
725
- #4 at line /usr/local/lib/ruby/1.9.1/minitest/unit.rb:334
726
- (byebug:1)
704
+ --> #0 TestTri.test_basic at test-tri2.rb:11
705
+ #1 MiniTest::Unit::TestCase.run(runner#MiniTest::Unit)
706
+ at /usr/local/lib/ruby/1.9.1/minitest/unit.rb:458
707
+ #2 MiniTest::Unit.run_test_suites
708
+ at /usr/local/lib/ruby/1.9.1/minitest/unit.rb:426
709
+ #3 MiniTest::Unit.run
710
+ at /usr/local/lib/ruby/1.9.1/minitest/unit.rb:393
711
+ #4 at /usr/local/lib/ruby/1.9.1/minitest/unit.rb:334
712
+ (byebug:1)
727
713
  @end smallexample
728
714
 
729
- Much better. But again let me emphasize that the parameter types are
730
- those of the corresponding variables that @emph{currently} exist, and
731
- this might have changed since the time when the call was made.
715
+ Much better. But again let me emphasize that the parameter types are those of
716
+ the corresponding variables that @emph{currently} exist, and this might have
717
+ changed since the time when the call was made.
732
718
 
733
719
  @node Byebug.start with a block
734
720
  @section Using the @code{Byebug.start} with a block
735
721
 
736
- We saw that @code{Byebug.start()} and @code{Byebug.stop()} allow
737
- fine-grain control over where byebug tracking should occur.
738
-
739
- Rather than use an explicit @code{stop()}, you can also pass a block
740
- to the @code{start()} method. This causes @code{start()} to run and
741
- then @code{yield} to that block. When the block is finished,
742
- @code{stop()} is run. In other words, this wraps a
743
- @code{Byebug.start()} and @code{Byebug.stop()} around the block of
744
- code. But it also has a side benefit of ensuring that in the presence
745
- of an uncaught exception @code{stop} is run, without having to
746
- explicitly use @code{begin} ... @code{ensure Byebug.stop() end}.
722
+ We saw that @code{Byebug.start()} and @code{Byebug.stop()} allow fine-grain
723
+ control over where byebug tracking should occur.
747
724
 
748
- For example, in Ruby Rails you might want to debug code in one of the
749
- controllers without causing any slowdown to any other code. And
750
- this can be done by wrapping the controller in a @code{start()} with a
751
- block; when the method wrapped this way finishes byebug is
752
- turned off, and the application proceeds at regular speed.
725
+ Rather than use an explicit @code{stop()}, you can also pass a block to the
726
+ @code{start()} method. This causes @code{start()} to run and then @code{yield}
727
+ to that block. When the block is finished, @code{stop()} is run. In other words,
728
+ this wraps a @code{Byebug.start()} and @code{Byebug.stop()} around the block of
729
+ code. But it also has a side benefit of ensuring that in the presence of an
730
+ uncaught exception @code{stop} is run, without having to explicitly use
731
+ @code{begin} ... @code{ensure Byebug.stop() end}.
753
732
 
754
- Of course, inside the block you will probably want to enter the
755
- byebug using @code{Byebug.byebug()}, otherwise there would
756
- little point in using the @code{start}. For example, you can do this
757
- in @code{irb}:
733
+ For example, in Ruby on Rails you might want to debug code in one of the
734
+ controllers without causing any slowdown to any other code. And this can be done
735
+ by wrapping the controller in a @code{start()} with a block; when the method
736
+ wrapped this way finishes, byebug is turned off and the application proceeds at
737
+ regular speed.
758
738
 
739
+ Of course, inside the block you will probably want to enter the byebug using
740
+ @code{Byebug.byebug()}, otherwise there would be little point in using the
741
+ @code{start}. For example, you can do this in @code{irb}:
759
742
  @smallexample
760
743
  $ @b{irb}
761
744
  irb(main):001:0> @b{require 'byebug'}
@@ -776,66 +759,53 @@ irb(main):006:0> @b{Byebug.start@{byebug; foo@}}
776
759
  (byebug:1) @b{s}
777
760
  foo
778
761
  => true
779
- irb(main):007:0>
762
+ irb(main):007:0>
780
763
  @end smallexample
781
764
 
782
- There is a counter inside of @code{Byebug.start} method to make sure
783
- that this works when another @code{Byebug.start} method is called
784
- inside of outer one. However if you are stopped inside byebug,
785
- issuing another @code{byebug} call will not have any effect even if
786
- it is nested inside another @code{Byebug.start}.
765
+ There is a counter inside of @code{Byebug.start} method to make sure that this
766
+ works when another @code{Byebug.start} method is called inside of the outer one.
767
+ However if you are stopped inside byebug, issuing another @code{byebug} call
768
+ will not have any effect even if it is nested inside another
769
+ @code{Byebug.start}.
787
770
 
788
771
  @node Debugging Oddities
789
- @section How debugging Ruby may be different than debugging other Languages
790
-
791
- If you are used to debugging in other languages like C, C++, Perl,
792
- Java or even Bash@footnote{this is just an excuse to put in a
793
- shameless plug for my bash byebug @url{http://bashdb.sf.net}}, there
794
- may be a number of things that seem or feel a little bit different and
795
- may confuse you. A number of these things aren't oddities of the
796
- byebug per se, so much as a difference in how Ruby works compared to
797
- those other languages. Because Ruby works a little differently from
798
- those other languages, writing a byebug has to also be a little
772
+ @section How debugging Ruby may be different from debugging other languages
773
+
774
+ If you are used to debugging in other languages like C, C++, Perl, Java or even
775
+ Bash@footnote{this is just an excuse to put in a shameless plug for this bash
776
+ debugger @url{http://bashdb.sf.net}}, there may be a number of things that seem
777
+ or feel a little bit different and may confuse you. A number of these things
778
+ aren't oddities of the debugger per se, so much as a difference in how Ruby
779
+ works compared to those other languages. Because Ruby works a little differently
780
+ from those other languages, writing a debugger has to also be a little
799
781
  different as well if it is to be useful.
800
782
 
801
- In this respect, using byebug may help you understand Ruby
802
- better.
783
+ In this respect, using byebug may help you understand Ruby better.
803
784
 
804
- We've already seen two examples of such differences. One difference is
805
- the fact that we stop on method definitions or @code{def}'s and that is
806
- because these are in fact executable statements. In other compiled
807
- languages this would not happen because that's already been done when
808
- you compile the program (or in Perl when it scans in the program). The
809
- other difference we saw was in our inability to show call stack parameter
810
- types without having made arrangements for byebug to track
811
- this. In other languages call stack information is usually available
812
- without asking assistance of byebug.@footnote{However in C, and
813
- C++ generally you have to ask the compiler to add such information.}
785
+ We've already seen two examples of such differences. One difference is the fact
786
+ that we stop on method definitions or @code{def}'s and that is because these are
787
+ in fact executable statements. In other compiled languages this would not happen
788
+ because that's already been done when you compile the program (or in Perl when
789
+ it scans in the program). The other difference we saw was our inability to show
790
+ call stack parameter types without having made arrangements for byebug to track
791
+ this. In other languages call stack information is usually available without
792
+ asking assistance of the debugger@footnote{However in C and C++ you generally
793
+ have to ask the compiler to add such information.}.
814
794
 
815
- In this section we'll consider some other things that might throw
816
- off new users to Ruby who are familiar with other languages and
817
- debugging in them.
795
+ In this section we'll consider some other things that might throw off new users
796
+ to Ruby who are familiar with other languages and debugging in them.
818
797
 
819
798
  @menu
820
- * Stack No Longer Shows Scope Nesting::
821
799
  * Bouncing Around in Blocks (e.g. Iterators)::
822
800
  * No Parameter Values in a Call Stack::
823
801
  * Lines You Can Stop At::
824
802
  @end menu
825
803
 
826
- @node Stack No Longer Shows Scope Nesting
827
- @subsection Stack No Longer Shows Scope Nesting
828
- In the Ruby 1.8 byebug, backtraces will show more stack frames
829
- that you might find in other languages, such as C. In the Ruby 1.9
830
- byebug, this is no longer the case.
831
-
832
804
  @node Bouncing Around in Blocks (e.g. Iterators)
833
805
  @subsection Bouncing Around in Blocks (e.g.@: Iterators)
834
-
835
- When debugging languages with coroutines like Python and Ruby, a
836
- method call may not necessarily go to the first statement after the
837
- method header. It's possible the call will continue after a
838
- @code{yield} statement from a prior call.
806
+ When debugging languages with coroutines like Python and Ruby, a method call may
807
+ not necessarily go to the first statement after the method header. It's possible
808
+ that the call will continue after a @code{yield} statement from a prior call.
839
809
 
840
810
  @smallexample
841
811
  1 #!/usr/bin/env ruby
@@ -854,7 +824,7 @@ method header. It's possible the call will continue after a
854
824
  14 end
855
825
  15 unless not_prime
856
826
  16 @@@@odd_primes << candidate
857
- 17 yield candidate
827
+ 17 yield candidate
858
828
  18 end
859
829
  19 candidate += 2
860
830
  20 end
@@ -885,60 +855,55 @@ Tracing(1):primes.rb:8 not_prime = false
885
855
  Tracing(1):primes.rb:9 candidate += 1
886
856
  primes.rb:9
887
857
  candidate += 1
888
- (byebug:1)
858
+ (byebug:1)
889
859
  @end smallexample
890
860
 
891
861
  The loop between lines 23--26 gets interleaved between those of
892
- @code{Sieve::next_prime}, lines 6--19 above.
862
+ @code{Sieve::next_prime}, lines 6--19 above.
893
863
 
894
- A similar kind of thing can occur in debugging programs with many threads.
864
+ A similar kind of thing can occur when debugging programs with many threads.
895
865
 
896
866
  @node No Parameter Values in a Call Stack
897
867
  @subsection No Parameter Values in a Call Stack
898
- In traditional byebugs in a call stack you can generally see the
899
- names of the parameters and the values that were passed in.
900
-
901
- Ruby is a very dynamic language and it tries to be efficient within
902
- the confines of the language definition. Values generally aren't taken
903
- out of a variable or expression and pushed onto a stack. Instead a new
904
- scope created and the parameters are given initial values. Parameter
905
- passing is by @emph{reference}, not by value as it is say Algol, C, or
906
- Perl. During the execution of a method, parameter values can
907
- change---and often do. In fact even the @emph{class} of the object can
908
- change.
868
+ In traditional debuggers, in a call stack you can generally see the names of the
869
+ parameters and the values that were passed in.
870
+
871
+ Ruby is a very dynamic language and it tries to be efficient within the confines
872
+ of the language definition. Values generally aren't taken out of a variable or
873
+ expression and pushed onto a stack. Instead a new scope created and the
874
+ parameters are given initial values. Parameter passing is by @emph{reference},
875
+ not by value as it is say Algol, C, or Perl. During the execution of a method,
876
+ parameter values can change---and often do. In fact even the @emph{class} of the
877
+ object can change.
909
878
 
910
879
  So at present, the name of the parameter shown. The call-style setting
911
- @pxref{Callstyle} can be used to set whether the name is shown or the
912
- name and the @emph{current} class of the object.
880
+ @pxref{Callstyle} can be used to set whether the name is shown or the name and
881
+ the @emph{current} class of the object.
913
882
 
914
- It has been contemplated that a style might be added which saves on
915
- call shorter ``scalar'' types of values and the class name.
883
+ It has been contemplated that a style might be added which saves on call shorter
884
+ ``scalar'' types of values and the class name.
916
885
 
917
886
  @node Lines You Can Stop At
918
887
  @subsection Lines You Can Stop At
919
- As with the duplicate stops per control (e.g.@: @code{if} statement),
920
- until tools like byebugs get more traction among core ruby
921
- developers there are going to be weirdness. Here we describe the
922
- stopping locations which effects the breakpoint line numbers you can
923
- stop at.
888
+ As with the duplicate stops per control (e.g.@: @code{if} statement), until
889
+ tools like byebugs get more traction among core ruby developers there are going
890
+ to be weirdness. Here we describe the stopping locations which effects the
891
+ breakpoint line numbers you can stop at.
924
892
 
925
893
  Consider the following little Ruby program.
926
-
927
894
  @smallexample
928
895
  'Yes it does' =~ /
929
896
  (Yes) \s+
930
897
  it \s+
931
898
  does
932
- /ix
899
+ /ix
933
900
  puts $1
934
901
  @end smallexample
935
902
 
936
- The stopping points that Ruby records are the last two lines, lines 5
937
- and 6.
903
+ The stopping points that Ruby records are the last two lines, lines 5 and 6.
938
904
 
939
- Inside @code{byebug} you an get a list of stoppable lines for a
940
- file using the @code{info file} command with the attribute
941
- @code{breakpoints}.
905
+ Inside @code{byebug} you can get a list of stoppable lines for a file using the
906
+ @code{info file} command with the attribute @code{breakpoints}.
942
907
 
943
908
  @ifset FINISHED
944
909
  To be continued...
@@ -957,14 +922,14 @@ To be continued...
957
922
  @chapter Getting in and out
958
923
 
959
924
  @menu
960
- * Starting byebug:: How to enter byebug
961
- * Command Files:: Command files
962
- * Quitting byebug:: How to leave byebug (quit, kill)
963
- * Calling from Program:: Calling byebug from inside your program
925
+ * Starting byebug:: How to enter byebug
926
+ * Command Files:: Command files
927
+ * Quitting byebug:: How to leave byebug (quit, kill)
928
+ * Calling from Program:: Calling byebug from inside your program
964
929
  @end menu
965
930
 
966
931
  It is also possible to enter byebug when you have an uncaught
967
- exception. See See also @ref{Post-Mortem Debugging}.
932
+ exception. See See also @ref{Post-Mortem Debugging}.
968
933
 
969
934
  @node Starting byebug
970
935
  @section Starting byebug
@@ -1007,10 +972,10 @@ Options:
1007
972
  --no-quit Do not quit when script finishes
1008
973
  --no-rewrite-program Do not set $0 to the program being debugged
1009
974
  --no-stop Do not stop when script is loaded
1010
- -nx Not run byebug initialization files (e.g. .byebugrc
975
+ -nx Not run byebug initialization files (e.g. .byebugrc
1011
976
  -p, --port PORT Port used for remote debugging
1012
977
  -r, --require SCRIPT Require the library, before executing your script
1013
- --restart-script FILE Name of the script file to run. Erased after read
978
+ --restart-script FILE Name of the script file to run. Erased after read
1014
979
  --script FILE Name of the script file to run
1015
980
  -s, --server Listen for remote connections
1016
981
  -w, --wait Wait for a client connection, implies -s option
@@ -1023,7 +988,7 @@ Common options:
1023
988
  -v Print version number, then turn on verbose mode
1024
989
  @end smallexample
1025
990
 
1026
- Options for the @code{byebug} are shown in the following list.
991
+ Options for the @code{byebug} are shown in the following list.
1027
992
 
1028
993
  @menu
1029
994
  * byebug command-line options:: Options you can pass to byebug
@@ -1036,7 +1001,7 @@ Options for the @code{byebug} are shown in the following list.
1036
1001
  You can run @DBG{} in various alternative modes---for example, as a
1037
1002
  program that interacts directly with the program in the same process
1038
1003
  on the same computer or via a socket to another process possibly on a
1039
- different computer.
1004
+ different computer.
1040
1005
 
1041
1006
  Many options appear as a long option name, such as @option{--help}, and
1042
1007
  a short one letter option name, such as @option{-h}. A double dash
@@ -1068,7 +1033,7 @@ having to poll for it.
1068
1033
  @cindex @option{--client}
1069
1034
  Connect to remote byebug. The remote byebug should have been set
1070
1035
  up previously our you will get a connection error and @code{byebug}
1071
- will terminate.
1036
+ will terminate.
1072
1037
 
1073
1038
  @item --cport @var{port}
1074
1039
  @cindex @option{--cport} @var{port}
@@ -1081,13 +1046,13 @@ Ruby's.
1081
1046
 
1082
1047
  @item --emacs
1083
1048
  Activates GNU Emacs mode.
1084
- @c @pxref{GNU Emacs}.
1049
+ @c @pxref{GNU Emacs}.
1085
1050
  Byebug output is tagged in such a way to allow GNU Emacs to track
1086
1051
  where you are in the code.
1087
1052
 
1088
1053
  @item --emacs-basic
1089
1054
  Activates full GNU Emacs mode.
1090
- @c (@pxref{GNU Emacs}).
1055
+ @c (@pxref{GNU Emacs}).
1091
1056
  This is the equivalent of setting the options @option{--emacs-basic},
1092
1057
  @code{annotate=3}, @option{--no-stop}, @option{-no-control} and
1093
1058
  @option{--post-mortem}.
@@ -1119,7 +1084,7 @@ and module name resolution.
1119
1084
  However it's still possible to restore the old, slower behavior by
1120
1085
  using this option or by setting @code{Byebug.keep_frame_binding =
1121
1086
  true}. There are two possibilities for which you might want to use
1122
- this option.
1087
+ this option.
1123
1088
 
1124
1089
  First, if you think there's a bug in the evaluation of variables, you
1125
1090
  might want to set this to see if this corrects things.
@@ -1137,8 +1102,8 @@ is partly why this byebug doesn't work on Ruby 1.9.
1137
1102
  @cindex @option{--post-mortem}
1138
1103
  If your program raises an exception that isn't caught you can enter
1139
1104
  byebug for inspection of what went wrong. You may also want to
1140
- use this option in conjunction with @option{--no-stop}. See also
1141
- @ref{Post-Mortem Debugging}.
1105
+ use this option in conjunction with @option{--no-stop}. See also
1106
+ @ref{Post-Mortem Debugging}.
1142
1107
 
1143
1108
  @item --no-control
1144
1109
  @cindex @option{--no-control}
@@ -1201,14 +1166,14 @@ If all you want to do however is get a linetrace, @code{tracer}, not
1201
1166
  @smallexample
1202
1167
  $ @b{time ruby -rtracer gcd.rb 34 21 > /dev/null}
1203
1168
 
1204
- real 0m0.266s
1205
- user 0m0.008s
1206
- sys 0m0.000s
1169
+ real 0m0.266s
1170
+ user 0m0.008s
1171
+ sys 0m0.000s
1207
1172
  $ @b{time byebug --trace gcd.rb 34 21 > /dev/null}
1208
1173
 
1209
- real 0m0.875s
1210
- user 0m0.448s
1211
- sys 0m0.056s
1174
+ real 0m0.875s
1175
+ user 0m0.448s
1176
+ sys 0m0.056s
1212
1177
  $
1213
1178
  @end smallexample
1214
1179
 
@@ -1223,7 +1188,7 @@ people may want @option{--no-quit --no-control} to be the default
1223
1188
  behavior. One could write a wrapper script or set a shell alias to
1224
1189
  handle this. @DBG{} has another way to do this as well. Before
1225
1190
  processing command options if the file @code{$HOME/.rdboptrc} is found
1226
- (or, on Windows, @code{$HOME/rdbopt.ini}, it is loaded.
1191
+ (or, on Windows, @code{$HOME/rdbopt.ini}, it is loaded.
1227
1192
  If you want to set the defaults in some other way, you
1228
1193
  can put Ruby code here and set variable @code{options} which is an
1229
1194
  OpenStruct. For example here's how you'd set @option{-no-quit} and
@@ -1272,7 +1237,7 @@ Processes command line options and operands.
1272
1237
  @item
1273
1238
  Reads the init file in your current directory, if any, and failing
1274
1239
  that the home directory. The home directory is the directory named in
1275
- the @code{HOME} or @code{HOMEPATH} environment variable.
1240
+ the @code{HOME} or @code{HOMEPATH} environment variable.
1276
1241
 
1277
1242
  Thus, you can have more than one init file, one generic in your home
1278
1243
  directory, and another, specific to the program you are debugging, in
@@ -1323,13 +1288,13 @@ at the same speed as if there were no byebug.
1323
1288
  There are three parts to calling byebug from inside the script,
1324
1289
  ``requiring'' byebug code, telling byebug to start
1325
1290
  tracking things and then making the call calling byebug to
1326
- stop.
1291
+ stop.
1327
1292
 
1328
1293
  To get byebug class accessible from your Ruby program:
1329
1294
 
1330
1295
  @smallexample
1331
1296
  require 'byebug'
1332
- @end smallexample
1297
+ @end smallexample
1333
1298
  After @code{require 'byebug'}, it's possible to set some of the
1334
1299
  byebug variables influence preferences. For example if you want to
1335
1300
  have @ttDBG run a @code{list} command every time it stops you set the
@@ -1342,7 +1307,7 @@ To tell byebug to start tracking things:
1342
1307
 
1343
1308
  @smallexample
1344
1309
  Byebug.start
1345
- @end smallexample
1310
+ @end smallexample
1346
1311
 
1347
1312
  There is also a @code{Byebug.stop} to turn off byebug tracking. If
1348
1313
  speed is crucial, you may want to start and stop this around certain
@@ -1356,7 +1321,7 @@ And finally to enter byebug:
1356
1321
 
1357
1322
  @smallexample
1358
1323
  byebug
1359
- @end smallexample
1324
+ @end smallexample
1360
1325
 
1361
1326
  As indicated above, when @code{byebug} is run a @code{.byebugrc}
1362
1327
  profile is read if that file exists.
@@ -1367,14 +1332,14 @@ where there is a problem you want to investigate. And since
1367
1332
  conditional expression, for example:
1368
1333
  @smallexample
1369
1334
  byebug if 'bar' == foo and 20 == iter_count
1370
- @end smallexample
1335
+ @end smallexample
1371
1336
 
1372
1337
  Although each step does a very specific thing which offers great
1373
1338
  flexibility, in order to make getting into byebug easier the
1374
1339
  three steps have been rolled into one command:
1375
1340
  @smallexample
1376
1341
  require "byebug/byebug"
1377
- @end smallexample
1342
+ @end smallexample
1378
1343
 
1379
1344
  @node Byebug Command Reference
1380
1345
  @chapter @code{byebug} Command Reference
@@ -1426,7 +1391,7 @@ arguments. Some commands do not allow any arguments.
1426
1391
 
1427
1392
  Multiple commands can be put on a line by separating each with a
1428
1393
  semicolon (@code{;}). You can disable the meaning of a semicolon to
1429
- separate commands by escaping it with a backslash.
1394
+ separate commands by escaping it with a backslash.
1430
1395
 
1431
1396
  For example, if you have @code{autoeval} (@ref{Autoeval}) set, you
1432
1397
  might want to enter the following code to compute the 5th Fibonacci
@@ -1449,7 +1414,7 @@ You might also consider using the @code{irb} command, @ref{irb}, and
1449
1414
  then you won't have to escape semicolons.
1450
1415
 
1451
1416
  A blank line as input (typing just @key{<RET>}) means to repeat the
1452
- previous command.
1417
+ previous command.
1453
1418
 
1454
1419
  In the ``local'' interface, the Ruby Readline module is used. It
1455
1420
  handles line editing and retrieval of previous commands. Up arrow, for
@@ -1500,16 +1465,16 @@ byebug help v@value{BYEBUG_VERSION}
1500
1465
  Type 'help <command-name>' for help on a specific command
1501
1466
 
1502
1467
  Available commands:
1503
- backtrace delete enable help list ps save thread where
1504
- break disable eval info method putl set trace
1505
- catch display exit irb next quit show undisplay
1506
- condition down finish jump p reload source up
1468
+ backtrace delete enable help list ps save thread where
1469
+ break disable eval info method putl set trace
1470
+ catch display exit irb next quit show undisplay
1471
+ condition down finish jump p reload source up
1507
1472
  continue edit frame kill pp restart step var
1508
1473
  @end smallexample
1509
1474
  @end flushleft
1510
1475
  @c the above line break eliminates huge line overfull...
1511
1476
 
1512
- @end table
1477
+ @end table
1513
1478
 
1514
1479
  @table @code
1515
1480
  @item help @var{command}
@@ -1519,10 +1484,10 @@ information on how to use that command.
1519
1484
  @smallexample
1520
1485
  (byebug:1) @b{help list}
1521
1486
  byebug help v@value{BYEBUG_VERSION}
1522
- l[ist] list forward
1523
- l[ist] - list backward
1524
- l[ist] = list current line
1525
- l[ist] nn-mm list given lines
1487
+ l[ist] list forward
1488
+ l[ist] - list backward
1489
+ l[ist] = list current line
1490
+ l[ist] nn-mm list given lines
1526
1491
  * NOTE - to turn on autolist, use 'set autolist'
1527
1492
  (byebug:1)
1528
1493
  @end smallexample
@@ -1546,9 +1511,9 @@ Some examples follow.
1546
1511
  @example
1547
1512
  (byebug:1) @b{help info}
1548
1513
  Generic command for showing things about the program being debugged.
1549
- --
1514
+ --
1550
1515
  List of info subcommands:
1551
- --
1516
+ --
1552
1517
  info args -- Argument variables of current stack frame
1553
1518
  info breakpoints -- Status of user-settable breakpoints
1554
1519
  info catch -- Exceptions that can be caught in the current stack frame
@@ -1616,7 +1581,7 @@ questions asked, enter the ``unconditionally''.
1616
1581
  @kindex restart @r{[}@var{program args}@r{]}
1617
1582
  @kindex R @r{(@code{restart})}
1618
1583
  @item restart
1619
- @itemx R
1584
+ @itemx R
1620
1585
 
1621
1586
  Restart the program. This is a re-exec - all byebug state is
1622
1587
  lost. If command arguments are passed those are used. Otherwise the
@@ -1625,7 +1590,7 @@ last program arguments used in the last invocation are used.
1625
1590
  In not all cases will you be able to restart the program. First, the
1626
1591
  program should have been invoked at the outset rather than having been
1627
1592
  called from inside your program or invoked as a result of post-mortem
1628
- handling.
1593
+ handling.
1629
1594
 
1630
1595
  Also, since this relies on the the OS @code{exec} call, this command
1631
1596
  is available only if your OS supports that @code{exec}; OSX for
@@ -1674,7 +1639,7 @@ automatic display looks like this:
1674
1639
  @end smallexample
1675
1640
 
1676
1641
  @noindent
1677
- This display shows item numbers, expressions and their current values.
1642
+ This display shows item numbers, expressions and their current values.
1678
1643
  If the expression is undefined or illegal the expression will be
1679
1644
  printed but no value will appear.
1680
1645
 
@@ -1682,7 +1647,7 @@ printed but no value will appear.
1682
1647
  (byebug:1) display undefined_variable
1683
1648
  2: undefined_variable =
1684
1649
  (byebug:1) display 1/0
1685
- 3: 1/0 =
1650
+ 3: 1/0 =
1686
1651
  @end smallexample
1687
1652
 
1688
1653
  Note: this command uses @code{to_s} to in expressions; for example an
@@ -1699,7 +1664,7 @@ on (@pxref{DisplayCommands}).
1699
1664
 
1700
1665
  @item display
1701
1666
  Display the current values of the expressions on the list, just as is
1702
- done when your program stops.
1667
+ done when your program stops.
1703
1668
 
1704
1669
  @kindex undisplay @ovar{num}
1705
1670
  @item undisplay @ovar{num}
@@ -1747,7 +1712,7 @@ does in @code{irb}.
1747
1712
  @node eval
1748
1713
  @subsection Printing an expression (@samp{eval}, @samp{p})
1749
1714
  @table @code
1750
- @kindex eval @var{expr}
1715
+ @kindex eval @var{expr}
1751
1716
  @kindex p @r{(@code{eval})}
1752
1717
  @item eval @var{expr}
1753
1718
  @itemx p @var{expr}
@@ -1796,8 +1761,8 @@ list looks nicer:
1796
1761
  @end smallexample
1797
1762
 
1798
1763
  Note however that entries are sorted to run down first rather than
1799
- across. So in the example above the second entry in the list is
1800
- @code{/usr/lib/ruby/site_ruby/1.8/i586-linux} and the @emph{third} entry is
1764
+ across. So in the example above the second entry in the list is
1765
+ @code{/usr/lib/ruby/site_ruby/1.8/i586-linux} and the @emph{third} entry is
1801
1766
  @code{/usr/lib/ruby/site_ruby/1.8}.
1802
1767
 
1803
1768
  If the value is not an array @code{putl} will just call pretty-print.
@@ -1811,24 +1776,24 @@ and so does the output of the @code{method} commands.
1811
1776
  @group
1812
1777
  (byebug:1) ps Kernel.private_methods
1813
1778
  Digest initialize y
1814
- Pathname initialize_copy
1815
- Rational location_of_caller
1816
- active_gem_with_options method_added
1817
- alias_method method_removed
1818
- append_features method_undefined
1819
- attr module_function
1820
- attr_accessor private
1821
- attr_reader protected
1822
- attr_writer public
1823
- class_variable_get remove_class_variable
1824
- class_variable_set remove_const
1825
- define_method remove_instance_variable
1826
- extend_object remove_method
1827
- extended singleton_method_added
1828
- gcd singleton_method_removed
1779
+ Pathname initialize_copy
1780
+ Rational location_of_caller
1781
+ active_gem_with_options method_added
1782
+ alias_method method_removed
1783
+ append_features method_undefined
1784
+ attr module_function
1785
+ attr_accessor private
1786
+ attr_reader protected
1787
+ attr_writer public
1788
+ class_variable_get remove_class_variable
1789
+ class_variable_set remove_const
1790
+ define_method remove_instance_variable
1791
+ extend_object remove_method
1792
+ extended singleton_method_added
1793
+ gcd singleton_method_removed
1829
1794
  gem_original_require singleton_method_undefined
1830
- include timeout
1831
- included undef_method
1795
+ include timeout
1796
+ included undef_method
1832
1797
  @end group
1833
1798
  @end smallexample
1834
1799
 
@@ -1839,7 +1804,7 @@ See also the @code{methods}.
1839
1804
  @node irb
1840
1805
  @subsection Run irb (@samp{irb})
1841
1806
  @table @code
1842
- @kindex irb
1807
+ @kindex irb
1843
1808
  @item irb
1844
1809
  Run an interactive ruby session (@code{irb}) with the bindings
1845
1810
  environment set to the state you are in the program.
@@ -1915,17 +1880,17 @@ Show methods of @var{object}. Basically this is the same as running
1915
1880
  @kindex method iv @var{object}
1916
1881
  Show method instance variables of @var{object}. Basically this is the same as running
1917
1882
  @smallexample
1918
- obj.instance_variables.each do |v|
1883
+ obj.instance_variables.each do |v|
1919
1884
  puts "%s = %s\n" % [v, obj.instance_variable_get(v)]
1920
- end
1885
+ end
1921
1886
  @end smallexample
1922
1887
  on @var{object}.
1923
1888
  @item signature @var{object}
1924
1889
  @kindex method signature @var{object}
1925
- Show procedure signature of method @var{object}.
1890
+ Show procedure signature of method @var{object}.
1926
1891
  @emph{This command is available only if the nodewrap is installed.}
1927
1892
  @smallexample
1928
- def mymethod(a, b=5, &bock)
1893
+ def mymethod(a, b=5, &bock)
1929
1894
  end
1930
1895
  (byebug:1) @b{method sig mymethod}
1931
1896
  Mine#mymethod(a, b=5, &bock)
@@ -1955,7 +1920,7 @@ You can print other portions of source files by giving an explicit
1955
1920
  position as a parameter to the list command.
1956
1921
 
1957
1922
  If you use @value{DBG} through its Emacs interface, you may prefer to
1958
- use Emacs facilities to view source.
1923
+ use Emacs facilities to view source.
1959
1924
  @c @pxref{GNU Emacs}.
1960
1925
 
1961
1926
  @kindex list @ovar{line-number}
@@ -2126,8 +2091,8 @@ frame numbers shown. The position of the current frame is marked with
2126
2091
 
2127
2092
  @smallexample
2128
2093
  (byebug:1) where
2129
- --> #0 Object.gcd(a#Fixnum, b#Fixnum) at line /tmp/gcd.rb:6
2130
- #1 at line /tmp/gcd.rb:19
2094
+ --> #0 Object.gcd(a#Fixnum, b#Fixnum) at /tmp/gcd.rb:6
2095
+ #1 at /tmp/gcd.rb:19
2131
2096
  @end smallexample
2132
2097
 
2133
2098
  @ifset FINISHED
@@ -2162,7 +2127,7 @@ frames that have existed longer. Using a negative @var{n} is the same thing
2162
2127
  as issuing a @code{down} command of the absolute value of the @var{n}.
2163
2128
  Using zero for @var{n} does no frame adjustment, but since the current
2164
2129
  position is redisplayed, it may trigger a resynchronization if there is
2165
- a front end also watching over things.
2130
+ a front end also watching over things.
2166
2131
 
2167
2132
  @var{n} defaults to one. You may abbreviate @code{up} as @code{u}.
2168
2133
 
@@ -2174,7 +2139,7 @@ that were created more recently. Using a negative @var{n} is the same
2174
2139
  as issuing a @code{up} command of the absolute value of the @var{n}.
2175
2140
  Using zero for @var{n} does no frame adjustment, but since the current
2176
2141
  position is redisplayed, it may trigger a resynchronization if there is
2177
- a front end also watching over things.
2142
+ a front end also watching over things.
2178
2143
 
2179
2144
  @var{n} defaults to one.
2180
2145
  @end table
@@ -2195,10 +2160,10 @@ most ``main'' stack frame.
2195
2160
  Without an argument, @code{frame} prints the current stack
2196
2161
  frame. Since the current position is redisplayed, it may trigger a
2197
2162
  resynchronization if there is a front end also watching over
2198
- things.
2163
+ things.
2199
2164
 
2200
2165
  If a thread number is given then we set the context for evaluating
2201
- expressions to that frame of that thread.
2166
+ expressions to that frame of that thread.
2202
2167
  @end table
2203
2168
 
2204
2169
  @node Stopping
@@ -2229,7 +2194,7 @@ remove old ones, and then continue execution.
2229
2194
  @cindex breakpoints
2230
2195
  A @dfn{breakpoint} makes your script stop whenever a certain point in
2231
2196
  the program is reached. For each breakpoint, you can add conditions to
2232
- control in finer detail whether your script stops.
2197
+ control in finer detail whether your script stops.
2233
2198
 
2234
2199
  You specify the place where your script should stop with the
2235
2200
  @code{break} command and its variants.
@@ -2296,7 +2261,7 @@ specified here. If the method you want to stop in is in the main class
2296
2261
  program), then use the name @code{Object}.
2297
2262
 
2298
2263
  @kindex catch @ovar{exception} @r{[} on | 1 | off | 0 @r{]}
2299
- @kindex cat @r{(@code{catch})}
2264
+ @kindex cat @r{(@code{catch})}
2300
2265
  @item catch @ovar{exception} @r{[} on | 1 | off | 0 @r{]}
2301
2266
  Set catchpoint to an exception. Without an exception name show catchpoints.
2302
2267
 
@@ -2307,7 +2272,7 @@ off. To delete all exceptions type ``catch off''.
2307
2272
  @kindex delete @ovar{breakpoints}
2308
2273
  @kindex del @r{(@code{delete})}
2309
2274
  @item delete @ovar{breakpoints}
2310
- Delete the breakpoints specified as arguments.
2275
+ Delete the breakpoints specified as arguments.
2311
2276
 
2312
2277
  If no argument is specified, delete all breakpoints (@DBG asks
2313
2278
  confirmation. You can abbreviate this command as @code{del}.
@@ -2406,7 +2371,7 @@ the state of your other breakpoints; see @ref{Resuming Execution}.)
2406
2371
 
2407
2372
  The simplest sort of breakpoint breaks every time your script reaches
2408
2373
  a specified place. You can also specify a @dfn{condition} for a
2409
- breakpoint. A condition is just a Ruby expression.
2374
+ breakpoint. A condition is just a Ruby expression.
2410
2375
 
2411
2376
  Break conditions can be specified when a breakpoint is set, by using
2412
2377
  @samp{if} in the arguments to the @code{break} command. A breakpoint
@@ -2561,7 +2526,7 @@ If you want instead to terminate the program and byebug entirely, use
2561
2526
  @item continue @ovar{line-specification}
2562
2527
  @itemx c @ovar{line-specification}
2563
2528
  Resume program execution, at the address where your script last
2564
- stopped; any breakpoints set at that address are bypassed.
2529
+ stopped; any breakpoints set at that address are bypassed.
2565
2530
 
2566
2531
  The optional argument @var{line-specification} allows you to specify a
2567
2532
  line number to set a one-time breakpoint which is deleted when that
@@ -2585,7 +2550,7 @@ Change the next line to execute to the given line number.
2585
2550
  @section byebug settings (@samp{set args}, @samp{set autoeval}..)
2586
2551
 
2587
2552
  You can alter the way byebug interacts with you using @code{set}
2588
- commands.
2553
+ commands.
2589
2554
 
2590
2555
  The various parameters to @code{set} are given below. Each parameter
2591
2556
  name needs to to be only enough to make it unique. For example
@@ -2668,7 +2633,7 @@ autoeval is on.
2668
2633
  NameError Exception: undefined local variable or method `stepp' for ...
2669
2634
  @end smallexample
2670
2635
 
2671
- @kindex show autoeval
2636
+ @kindex show autoeval
2672
2637
  @item show args
2673
2638
  Shows whether Ruby evaluation of byebug input should occur or not.
2674
2639
  @end table
@@ -2728,12 +2693,12 @@ Shows the whether filename display shows just the file basename or not.
2728
2693
  @kindex set callstyle @r{[} short | last | tracked @r{]}
2729
2694
  @item set forcestep @r{[} short | last | tracked @r{]}
2730
2695
  @else
2731
- @kindex set callstyle @r{[} short | last
2732
- @item set forcestep @r{[} short | last
2696
+ @kindex set callstyle @r{[} short | last
2697
+ @item set forcestep @r{[} short | last
2733
2698
  @end ifset
2734
2699
 
2735
2700
  Sets how you want call parameters displayed; @code{short} shows just
2736
- the parameter names;
2701
+ the parameter names;
2737
2702
  @ifset FINISHED
2738
2703
  @code{last} shows the parameter names and the
2739
2704
  class of these variables as they currently exist. Note the type could
@@ -2742,7 +2707,7 @@ values.
2742
2707
  @end ifset
2743
2708
  @code{tracked} is the most accurate but this adds
2744
2709
  overhead. On every call, scalar values of the parameters get
2745
- saved. For non-scalar values the class is saved.
2710
+ saved. For non-scalar values the class is saved.
2746
2711
  @end table
2747
2712
 
2748
2713
  @node Forcestep
@@ -2755,7 +2720,7 @@ saved. For non-scalar values the class is saved.
2755
2720
  Due to the interpretive, expression-oriented nature of the Ruby
2756
2721
  Language and implementation, each line often contains many possible
2757
2722
  stopping points, while in a byebug it is often desired to treat each
2758
- line as an individual stepping unit.
2723
+ line as an individual stepping unit.
2759
2724
 
2760
2725
  Setting forcestep on will cause each @code{step} or @code{next}
2761
2726
  command to stop at a different line number. See also @ref{Step} and
@@ -2829,11 +2794,11 @@ Shows whether line tracing is in effect or not.
2829
2794
 
2830
2795
  Setting linetrace+ on will cause consecutive trace lines not to be a
2831
2796
  duplicate of the preceding line-trace line. Note however that this
2832
- setting doesn't by itself turn on or off line tracing.
2797
+ setting doesn't by itself turn on or off line tracing.
2833
2798
 
2834
2799
  @kindex show linetrace+
2835
2800
  @item show linetrace
2836
- Shows whether the line tracing style is to show all lines or remove
2801
+ Shows whether the line tracing style is to show all lines or remove
2837
2802
  duplicates linetrace lines when it is a repeat of the previous line.
2838
2803
  @end table
2839
2804
 
@@ -2867,7 +2832,7 @@ have the ability to change the state inside byebug.
2867
2832
  @kindex set width @var{column-width}
2868
2833
  @item set width @var{column-width}
2869
2834
  Set number of characters byebug thinks are in a line.
2870
- We also change OS environment variable @code{COLUMNS}.
2835
+ We also change OS environment variable @code{COLUMNS}.
2871
2836
  @kindex show width
2872
2837
  @item show width
2873
2838
  Shows the current width setting.
@@ -2943,14 +2908,14 @@ an example:
2943
2908
 
2944
2909
  @smallexample
2945
2910
  (byebug:7) info threads
2946
- 1 #<Thread:0xb7d08704 sleep> ./test/thread1.rb:27
2947
- !2 #<Byebug::DebugThread:0xb7782e4c sleep>
2948
- 3 #<Thread:0xb777e220 sleep> ./test/thread1.rb:11
2949
- 4 #<Thread:0xb777e144 sleep> ./test/thread1.rb:11
2950
- 5 #<Thread:0xb777e07c sleep> ./test/thread1.rb:11
2951
- 6 #<Thread:0xb777dfb4 sleep> ./test/thread1.rb:11
2952
- + 7 #<Thread:0xb777deec run> ./test/thread1.rb:14
2953
- (byebug:1)
2911
+ 1 #<Thread:0xb7d08704 sleep> ./test/thread1.rb:27
2912
+ !2 #<Byebug::DebugThread:0xb7782e4c sleep>
2913
+ 3 #<Thread:0xb777e220 sleep> ./test/thread1.rb:11
2914
+ 4 #<Thread:0xb777e144 sleep> ./test/thread1.rb:11
2915
+ 5 #<Thread:0xb777e07c sleep> ./test/thread1.rb:11
2916
+ 6 #<Thread:0xb777dfb4 sleep> ./test/thread1.rb:11
2917
+ + 7 #<Thread:0xb777deec run> ./test/thread1.rb:14
2918
+ (byebug:1)
2954
2919
  @end smallexample
2955
2920
 
2956
2921
  Thread 7 is the current thread since it has a plus sign in front. Thread 2 is
@@ -2958,29 +2923,29 @@ ignored since it has a @code{!}. A ``verbose'' listing of the above:
2958
2923
 
2959
2924
  @smallexample
2960
2925
  (byebug:7) info threads verbose
2961
- 1 #<Thread:0xb7d08704 sleep>
2962
- #0 Integer.join at line test/thread1.rb:27
2963
- #1 at line test/thread1.rb:27
2964
- !2 #<Byebug::DebugThread:0xb7782e4c sleep>
2965
- 3 #<Thread:0xb777e220 sleep>
2966
- #0 sleep(count#Fixnum) at line test/thread1.rb:11
2967
- #1 Object.fn(count#Fixnum, i#Fixnum) at line test/thread1.rb:11
2968
- #2 at line test/thread1.rb:23
2969
- 4 #<Thread:0xb777e144 sleep>
2970
- #0 sleep(count#Fixnum) at line test/thread1.rb:11
2971
- #1 Object.fn(count#Fixnum, i#Fixnum) at line test/thread1.rb:11
2972
- #2 at line test/thread1.rb:23
2973
- 5 #<Thread:0xb777e07c sleep>
2974
- #0 sleep(count#Fixnum) at line test/thread1.rb:11
2975
- #1 Object.fn(count#Fixnum, i#Fixnum) at line test/thread1.rb:11
2976
- #2 at line test/thread1.rb:23
2977
- 6 #<Thread:0xb777dfb4 sleep>
2978
- #0 sleep(count#Fixnum) at line test/thread1.rb:11
2979
- #1 Object.fn(count#Fixnum, i#Fixnum) at line test/thread1.rb:11
2980
- #2 at line test/thread1.rb:23
2981
- + 7 #<Thread:0xb777deec run>
2982
- #0 Object.fn(count#Fixnum, i#Fixnum) at line test/thread1.rb:14
2983
- #1 at line test/thread1.rb:23
2926
+ 1 #<Thread:0xb7d08704 sleep>
2927
+ #0 Integer.join at test/thread1.rb:27
2928
+ #1 at test/thread1.rb:27
2929
+ !2 #<Byebug::DebugThread:0xb7782e4c sleep>
2930
+ 3 #<Thread:0xb777e220 sleep>
2931
+ #0 sleep(count#Fixnum) at test/thread1.rb:11
2932
+ #1 Object.fn(count#Fixnum, i#Fixnum) at test/thread1.rb:11
2933
+ #2 at test/thread1.rb:23
2934
+ 4 #<Thread:0xb777e144 sleep>
2935
+ #0 sleep(count#Fixnum) at test/thread1.rb:11
2936
+ #1 Object.fn(count#Fixnum, i#Fixnum) at test/thread1.rb:11
2937
+ #2 at test/thread1.rb:23
2938
+ 5 #<Thread:0xb777e07c sleep>
2939
+ #0 sleep(count#Fixnum) at test/thread1.rb:11
2940
+ #1 Object.fn(count#Fixnum, i#Fixnum) at test/thread1.rb:11
2941
+ #2 at test/thread1.rb:23
2942
+ 6 #<Thread:0xb777dfb4 sleep>
2943
+ #0 sleep(count#Fixnum) at test/thread1.rb:11
2944
+ #1 Object.fn(count#Fixnum, i#Fixnum) at test/thread1.rb:11
2945
+ #2 at test/thread1.rb:23
2946
+ + 7 #<Thread:0xb777deec run>
2947
+ #0 Object.fn(count#Fixnum, i#Fixnum) at test/thread1.rb:14
2948
+ #1 at test/thread1.rb:23
2984
2949
  @end smallexample
2985
2950
 
2986
2951
  @kindex info variables
@@ -3031,10 +2996,10 @@ post-mortem debugging set the @code{post_mortem} key in
3031
2996
  t.rb:8: raise 'test'
3032
2997
  (byebug:post-mortem) @b{l=}
3033
2998
  [3, 12] in t.rb
3034
- 3
2999
+ 3
3035
3000
  4 Byebug.start
3036
3001
  5 Byebug.post_mortem
3037
- 6
3002
+ 6
3038
3003
  7 def t1
3039
3004
  => 8 raise 'test'
3040
3005
  9 end
@@ -3059,7 +3024,7 @@ can enable post-mortem mode by wrapping this block inside a
3059
3024
 
3060
3025
  @smallexample
3061
3026
  def offender
3062
- 1/0
3027
+ 1/0
3063
3028
  end
3064
3029
  ...
3065
3030
  require "ruby-gems"
@@ -3069,7 +3034,7 @@ Byebug.post_mortem do
3069
3034
  offender
3070
3035
  ...
3071
3036
  end
3072
- @end smallexample
3037
+ @end smallexample
3073
3038
 
3074
3039
  Once inside byebug in post-mortem debugging, the prompt should
3075
3040
  be @code{(byebug:post-mortem)}.
@@ -3087,9 +3052,9 @@ be @code{(byebug:post-mortem)}.
3087
3052
  @section The Byebug Module
3088
3053
 
3089
3054
  @menu
3090
- * Byebug.run::
3055
+ * Byebug.run::
3091
3056
  @ifset LATER
3092
- * Byebug.post-mortem::
3057
+ * Byebug.post-mortem::
3093
3058
  @end ifset
3094
3059
  * Byebug.context::
3095
3060
  * Byebug.settings::
@@ -3133,7 +3098,7 @@ method.
3133
3098
 
3134
3099
  The first time Byebug.start is called there is also some additional
3135
3100
  setup to make the @code{restart} command work. In particular, @code{$0} and
3136
- @code{ARGV} are used to set internal byebug variables.
3101
+ @code{ARGV} are used to set internal byebug variables.
3137
3102
 
3138
3103
  Therefore you should make try to make sure that when
3139
3104
  @code{Byebug.start} is called neither of these variables has been
@@ -3171,9 +3136,9 @@ If not @code{nil}, this contains @code{$!} from the last exception.
3171
3136
  @subsection @code{Byebug.context}
3172
3137
  As mentioned previously, @code{Byebug.start} instruments additional
3173
3138
  information to be obtained about the current block/frame stack. Here
3174
- we describe these additional @code{Byebug.context} methods.
3139
+ we describe these additional @code{Byebug.context} methods.
3175
3140
 
3176
- Were a frame position is indicated, it is optional. The top or current frame
3141
+ Were a frame position is indicated, it is optional. The top or current frame
3177
3142
  position (position zero) is used if none is given.
3178
3143
 
3179
3144
  @table @code
@@ -3266,19 +3231,17 @@ Fixnum. Number of characters byebug thinks are in a line. @xref{Width}.
3266
3231
  @table @code
3267
3232
  @item add_breakpoint(file, line, expr)
3268
3233
  @vindex @code{Byebug.add_breakpoint}
3269
- Adds a breakpoint in file @var{file}, at line @var{line}. If
3270
- @var{expr} is not nil, it is evaluated and a breakpoint takes effect
3271
- at the indicated position when that expression is true. You should
3272
- verify that @var{expr} is syntactically valid or a @code{SyntaxError}
3273
- exception, and unless your code handles this the debugged program may
3274
- terminate.
3234
+ Adds a breakpoint in file @var{file}, at line @var{line}. If @var{expr} is not
3235
+ nil, it is evaluated and a breakpoint takes effect at the indicated position
3236
+ when that expression is true. You should verify that @var{expr} is syntactically
3237
+ valid or a @code{SyntaxError} exception, and unless your code handles this the
3238
+ debugged program may terminate.
3275
3239
 
3276
3240
  @item remove_breakpoint(bpnum)
3277
3241
  @vindex @code{Byebug.remove_breakpoint}
3278
- When a breakpoint is added, it is assigned a number as a way to
3279
- uniquely identify it. (There can be more than one breakpoint on a
3280
- given line.) To remove a breakpoint, use @code{remove_breakpoint} with
3281
- breakpoint number @var{bpnum}.
3242
+ When a breakpoint is added, it is assigned a number as a way to uniquely
3243
+ identify it. (There can be more than one breakpoint on a given line.) To remove
3244
+ a breakpoint, use @code{remove_breakpoint} with breakpoint number @var{bpnum}.
3282
3245
 
3283
3246
  @item breakpoints
3284
3247
  @vindex @code{Byebug.breakpoints}
@@ -3287,7 +3250,7 @@ Return a list of the breakpoints that have been added but not removed.
3287
3250
 
3288
3251
  @node Byebug.Breakpoint
3289
3252
  @subsection The @code{Byebug::Breakpoint} Class
3290
- Breakpoint are objects in the @code{Byebug::Breakpoint} class.
3253
+ Breakpoints are objects in the @code{Byebug::Breakpoint} class.
3291
3254
  @table @code
3292
3255
  @item enabled?
3293
3256
  @vindex @code{Byebug::Breakpoints.enabled?}
@@ -3295,15 +3258,17 @@ Returns whether breakpoint is enabled or not.
3295
3258
 
3296
3259
  @item enabled=
3297
3260
  @vindex @code{Byebug::Breakpoints.enabled=}
3298
- Sets whether breakpoint is enabled or not.
3261
+ Sets a breakpoint as enabled or not.
3299
3262
 
3300
3263
  @item expr
3301
3264
  @vindex @code{Byebug::Breakpoints.expr}
3302
- Expression which has to be true at the point where the breakpoint is
3265
+ Returns an expression which has to be true at the point where the breakpoint is
3303
3266
  set before we stop.
3304
3267
 
3305
3268
  @item expr=
3306
3269
  @vindex @code{Byebug::Breakpoints.expr=}
3270
+ Sets an expression which has to be true at the point where the breakpoint is set
3271
+ before we stop.
3307
3272
 
3308
3273
  @item hit_condition
3309
3274
  @item hit_condition=
@@ -3324,8 +3289,8 @@ Sets the hit value of the breakpoint.
3324
3289
 
3325
3290
  @item id
3326
3291
  @cindex @code{Byebug::Breakpoints.id}
3327
- A numeric name for the breakpoint which is used in listing breakpoints
3328
- and removing, enabling or disabling the breakpoint
3292
+ A numeric name for the breakpoint which is used in listing breakpoints and
3293
+ removing, enabling or disabling the breakpoint.
3329
3294
 
3330
3295
  @item pos
3331
3296
  @vindex @code{Byebug::Breakpoints.pos=}
@@ -3345,56 +3310,54 @@ Sets the file name in which the breakpoint occurs.
3345
3310
 
3346
3311
  @node Byebug.Context
3347
3312
  @subsection The @code{Byebug::Context} Class
3348
- Callbacks in @code{Byebug:Context} get called when a stopping point
3349
- or an event is reached. It has information about the suspended program
3350
- which enable a byebug to inspect the frame stack, evaluate variables
3351
- from the perspective of the debugged program, and contains information
3352
- about the place the debugged program is stopped.
3313
+ Callbacks in @code{Byebug:Context} get called when a stopping point or an event
3314
+ is reached. It has information about the suspended program which enable byebug
3315
+ to inspect the frame stack, evaluate variables from the perspective of the
3316
+ debugged program, and contains information about the place the debugged program
3317
+ is stopped.
3353
3318
 
3354
3319
  @table @code
3355
3320
  @item at_line(@var{file}, @var{line})
3356
3321
  @vindex Byebug::Context::at_line(@var{file}, @var{line})
3357
- This routine is called when byebug encounters a ``line'' event for
3358
- which it has been indicated we want to stop at, such as by hitting a
3359
- breakpoint or by some sort of stepping.
3322
+ This routine is called when byebug encounters a ``line'' event for which it has
3323
+ been indicated we want to stop at, such as by hitting a breakpoint or by some
3324
+ sort of stepping.
3360
3325
 
3361
3326
  @item at_return(@var{file}, @var{line})
3362
3327
  @vindex Byebug::Context::at_return(@var{file}, @var{line})
3363
- This routine is called when byebug encounters a ``return'' event for
3364
- which it has been indicated we want to stop at, such as by hitting a
3365
- @code{finish} statement.
3328
+ This routine is called when byebug encounters a ``return'' event for which it
3329
+ has been indicated we want to stop at, such as by hitting a @code{finish}
3330
+ statement.
3366
3331
 
3367
3332
  @item debug_load(@var{file}, @var{stop-initially})
3368
3333
  @vindex Byebug::Context::debug_load(@var{file}, @var{stop-initially})
3369
- This method should be used to debug a file. If the file terminates
3370
- normally, @code{nil} is returned. If not a backtrace is returned.
3334
+ This method should be used to debug a file. If the file terminates normally,
3335
+ @code{nil} is returned. If not a backtrace is returned.
3371
3336
 
3372
- The @var{stop-initially} parameter indicates whether the program
3373
- should stop after loading. If an explicit call to byebug is in
3374
- the debugged program, you may want to set this @code{false}.
3337
+ The @var{stop-initially} parameter indicates whether the program should stop
3338
+ after loading. If an explicit call to byebug is in the debugged program, you may
3339
+ want to set this @code{false}.
3375
3340
  @end table
3376
3341
 
3377
3342
  @node Byebug.Command
3378
3343
  @subsection The @code{Byebug::Command} Class
3344
+ Each command you run is in fact its own class. Should you want to extend byebug,
3345
+ it's pretty easy to do since after all byebug is Ruby.
3379
3346
 
3380
- Each command you run is in fact its own class. Should you want to extend
3381
- byebug, it's pretty easy to do since after all byebug is Ruby.
3382
-
3383
- Each @code{Byebug#Command} class should have the a @code{regexp}
3384
- method. This method returns regular expression for command-line
3385
- strings that match your command. It's up to you to make sure this
3386
- regular expression doesn't conflict with another one. If it does, it's
3387
- undefined which one will get matched and run
3347
+ Each @code{Byebug#Command} class should have a @code{regexp} method. This method
3348
+ returns regular expression for command-line strings that match your command.
3349
+ It's up to you to make sure this regular expression doesn't conflict with
3350
+ another one. If it does, it's undefined which one will get matched and run.
3388
3351
 
3389
3352
  In addition the instance needs these methods:
3390
3353
  @table @code
3391
3354
  @item execute
3392
- Code which gets run when you type a command (string) that matches the
3393
- commands regular expression.
3355
+ Code which gets run when you type a command (string) that matches the commands
3356
+ regular expression.
3394
3357
  @item help
3395
- A string which gets displayed when folks as for help on that command
3358
+ A string which gets displayed when folks ask for help on that command.
3396
3359
  @item help_command
3397
- A name used the help system uses to show what commands are available.
3360
+ A name the help system uses to show what commands are available.
3398
3361
  @end table
3399
3362
 
3400
3363
  Here's a small example of a new command:
@@ -3451,7 +3414,7 @@ continue edit frame me ps save thread where
3451
3414
  This does whatever it is I want to do
3452
3415
  (byebug:1) me
3453
3416
  hi
3454
- (byebug:1)
3417
+ (byebug:1)
3455
3418
  @end smallexample
3456
3419
 
3457
3420
  @node Kernel routines
@@ -3461,12 +3424,12 @@ hi
3461
3424
 
3462
3425
  @item byebug @ovar{steps=1}
3463
3426
  @vindex @code{Kernel::byebug}
3464
- Enters byebug in the current thread after a stepping @var{steps} line-event steps.
3465
- Before entering byebug startup script is read.
3427
+ Enters byebug in the current thread after a stepping @var{steps} line-event
3428
+ steps. Before entering byebug startup script is read.
3466
3429
 
3467
- Setting @var{steps} to 0 will cause a break in byebug subroutine
3468
- and not wait for eany line event to occur. This could be useful you
3469
- want to stop right after the last statement in some scope.
3430
+ Setting @var{steps} to 0 will cause a break in byebug subroutine and not wait
3431
+ for any line event to occur. This could be useful you want to stop right after
3432
+ the last statement in some scope.
3470
3433
 
3471
3434
  Consider this example:
3472
3435
  @smallexample
@@ -3474,7 +3437,7 @@ $ cat scope-test.rb
3474
3437
 
3475
3438
  require 'rubygems'
3476
3439
  require 'byebug' ; Byebug.start
3477
- 1.times do
3440
+ 1.times do
3478
3441
  a = 1
3479
3442
  byebug # implied steps=1
3480
3443
  end
@@ -3486,36 +3449,39 @@ y = 1
3486
3449
  NameError Exception: undefined local variable or method `a' for main:Object
3487
3450
  (byebug:1)
3488
3451
  @end smallexample
3489
- The byebug will get at the line event which follows @samp{a=1}. This
3490
- is outside the @code{do} block scope where @var{a} is defined. If
3491
- instead you want to stop before leaving the @code{do} loop it is
3492
- possibly to stop right inside the @code{byebug}; call with 0 zero parameter:
3452
+
3453
+ Byebug will stop at the line event which follows @samp{a=1}. This is outside the
3454
+ @code{do} block scope where @var{a} is defined. If instead you want to stop
3455
+ before leaving the @code{do} loop it is possibly to stop right inside
3456
+ @code{byebug}; call with 0 zero parameter:
3457
+
3493
3458
  @smallexample
3494
3459
  $ cat scope-test.rb
3495
3460
 
3496
3461
  require 'rubygems'
3497
3462
  require 'byebug' ; Byebug.start
3498
- 1.times do
3463
+ 1.times do
3499
3464
  a = 1
3500
3465
  byebug(0)
3501
3466
  end
3502
3467
  y = 1
3503
3468
 
3504
3469
  $ scope-test.rb:8
3505
- ../lib/byebug-base.rb:175
3470
+ ../lib/byebug.rb:386
3506
3471
  Byebug.current_context.stop_frame = 0
3507
3472
  (byebug:1) where
3508
- --> #0 Kernel.byebug(steps#Fixnum) at line ../lib/byebug-base.rb:175
3509
- #1 at line scope-test.rb:6
3510
- #2 at line scope-test.rb:4
3473
+ --> #0 Kernel.byebug(steps#Fixnum) at ../lib/byebug-base.rb:386
3474
+ #1 at scope-test.rb:6
3475
+ #2 at scope-test.rb:4
3511
3476
  (byebug:1) up
3512
- #1 at line scope-test.rb:6
3477
+ #1 at scope-test.rb:6
3513
3478
  (byebug:1) p a
3514
3479
  1
3515
3480
  (byebug:1)
3516
3481
  @end smallexample
3517
- As seen above you will have to position the frame up one to be back in
3518
- your debugged program rather than in byebug.
3482
+
3483
+ As seen above you will have to position the frame up one to be back in your
3484
+ debugged program rather than in byebug.
3519
3485
 
3520
3486
  @item breakpoint @ovar{steps=1}
3521
3487
  @vindex @code{Kernel::breakpoint}
@@ -3547,12 +3513,12 @@ OSX some of the below may need adjusting.
3547
3513
  @section Prerequisites: To build the package you'll need at a minimum:
3548
3514
 
3549
3515
  @itemize @bullet
3550
- @item
3551
- Ruby (of course). Currently only version 1.8.6 and above but not
3516
+ @item
3517
+ Ruby (of course). Currently only version 1.8.6 and above but not
3552
3518
  version 1.9.@emph{x} work.
3553
3519
  @item
3554
3520
  Ruby development headers. This typically includes a file called @file{ruby.h}
3555
- @item
3521
+ @item
3556
3522
  A C compiler like GNU C (@code{gcc})
3557
3523
  @item
3558
3524
  Rake
@@ -3564,7 +3530,7 @@ If you want to build the documentation and install Emacs files, you'll
3564
3530
  also need:
3565
3531
 
3566
3532
  @itemize @bullet
3567
- @item
3533
+ @item
3568
3534
  a POSIX shell like bash
3569
3535
  @item
3570
3536
  autoconf
@@ -3577,9 +3543,9 @@ also need:
3577
3543
  @end itemize
3578
3544
 
3579
3545
  @node Package Checkout
3580
- @section Basic Package Checkout and Installation
3546
+ @section Basic Package Checkout and Installation
3581
3547
 
3582
- Check out the trunk of repository following the instructions at
3548
+ Check out the trunk of repository following the instructions at
3583
3549
  @url{http://rubyforge.org/scm/?group_id=1900} For example on a Unixy system,
3584
3550
  this may work:
3585
3551
 
@@ -3599,7 +3565,7 @@ the code has been checked out and run:
3599
3565
  @end smallexample
3600
3566
 
3601
3567
  If all goes well you should have some gem files put in the directory
3602
- @code{pkg}. Use the gem command to install that.
3568
+ @code{pkg}. Use the gem command to install that.
3603
3569
 
3604
3570
  @smallexample
3605
3571
  sudo gem install byebug-*.gem # See gem help for other possibilities
@@ -3640,7 +3606,7 @@ script @code{runner.sh}. For example (again from trunk)
3640
3606
 
3641
3607
  @node Running Regression Tests
3642
3608
  @section Running the Regression Tests
3643
-
3609
+
3644
3610
  We've put together some basic tests to make sure byebug is doing
3645
3611
  what we think it should do. To run these (from @code{trunk}):
3646
3612
 
@@ -3710,26 +3676,25 @@ On my system, this script fails in running @code{make ruby} because the
3710
3676
  fake.rb that got created needed to have a small change:
3711
3677
 
3712
3678
  @smallexample
3713
-
3714
- ALT_SEPARATOR = "\"; \
3679
+ ALT_SEPARATOR = "\"; \
3715
3680
  @end smallexample
3716
3681
  should be:
3717
3682
  @smallexample
3718
- ALT_SEPARATOR = "\\"; \
3683
+ ALT_SEPARATOR = "\\"; \
3719
3684
  @end smallexample
3720
3685
 
3721
3686
  After fixing this, run @code{make ruby}. Also, I needed to run
3722
3687
  @code{make rubyw}.
3723
3688
 
3724
- And then @code{make install} as indicated.
3689
+ And then @code{make install} as indicated.
3725
3690
 
3726
3691
  Once all of that's in place, the place you want be is in
3727
- @code{byebug/trunk/ext/win32}, not @code{byebug/ext}.
3692
+ @code{byebug/trunk/ext/win32}, not @code{byebug/ext}.
3728
3693
 
3729
3694
  So let's say you've installed the cross-compiled install ruby in
3730
3695
  @code{/usr/local/ruby-mingw32/}. Here then are the commands to build @code{byebug-base-}@emph{xxx}@code{-mswin32.gem}:
3731
3696
  @smallexample
3732
- cd .../byebug/trunk/ext/win32
3697
+ cd .../byebug/trunk/ext/win32
3733
3698
  ruby -I /usr/local/ruby-mingw32/lib/ruby/1.8/i386-mingw32 ../extconf.rb
3734
3699
  make # Not rake
3735
3700
  cd ../.. # back in byebug/trunk