byebug 2.2.0 → 2.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f8478138d1bb0441775054b1f4ba7feb59429a60
4
- data.tar.gz: 1404c249bcc849e2b9ae0240617ef590e88b8b96
3
+ metadata.gz: fd86d998df7e4fd1df7269ddf72438a2623792b5
4
+ data.tar.gz: 0f125b6a5654b3ef774f0e009312024ce63df907
5
5
  SHA512:
6
- metadata.gz: 1cc5b019263bc58a174d59b5ad8829dc8781e53722b3742091e879122916484d3ef73e46be20f20cbb72359a0cee62843ca8cfde9676ff15a1101f0c27519914
7
- data.tar.gz: 46c6792714d460d1aaaf99cc487da5a8d0f0a72c81253e3c6e0d98df1af90358be796ef1de87ce7f1e43f44e4f6d1f575896683acde1e4811325c5c5c0511236
6
+ metadata.gz: f3ea7b37bdb6e6376b0d1c1058e99c71a64106d5895147691f28f567fdc95b2c2eac506aeefe172af7e7c8b4c1c8dba3dd47e26a694655685f8a8f037cc372de
7
+ data.tar.gz: 15d579ce1035bcfa73390774839a6ff4e4eb4448a9bf17d6f9c245089fe5337baee132020adba790082713b85d22a88f490e70d82c26db32ce9b0d97cca2913c
@@ -1,3 +1,9 @@
1
+ # 2.2.1
2
+
3
+ * Fix compilation issue introduced by 2.2.0 (#26)
4
+ * "show" and "set" option `stack_trace_on_error` is now called `stack_on_error`
5
+
6
+
1
7
  # 2.2.0
2
8
 
3
9
  * Small fixes in stack_size calculations
data/README.md CHANGED
@@ -125,11 +125,10 @@ Full lists of subcommands:
125
125
  `variables`.
126
126
  * set: `args`,`autoeval`,`autoirb`,`autolist`,`autoreload`,`basename`,
127
127
  `callstyle`,`forcestep`,`fullpath`,`history`,`linetrace`,`linetrace_plus`,
128
- `listsize`,`post_mortem`,`stack_trace_on_error`,`testing`,`verbose`,`width`.
128
+ `listsize`,`post_mortem`,`stack_on_error`,`testing`,`verbose`,`width`.
129
129
  * show: `args`,`autoeval`,`autoirb`,`autolist`,`autoreload`,`basename`,
130
130
  `callstyle`,`commands`,`forcestep`,`fullpath`,`history`,`linetrace`,
131
- `linetrace_plus`, `listsize`,`post_mortem`,`stack_trace_on_error`,`verbose`,
132
- `width`.
131
+ `linetrace_plus`, `listsize`,`post_mortem`,`stack_on_error`,`verbose`, `width`.
133
132
 
134
133
 
135
134
  ## Getting Started
data/bin/byebug CHANGED
@@ -225,11 +225,7 @@ options.stop = false if options.tracing
225
225
  Byebug.tracing = options.tracing
226
226
 
227
227
  loop do
228
- begin
229
- debug_program(options)
230
- rescue Exception
231
- p $!, $@
232
- end
228
+ debug_program(options)
233
229
 
234
230
  break if options.quit
235
231
 
@@ -277,31 +277,6 @@ brkpt_initialize(VALUE self, VALUE source, VALUE pos, VALUE expr)
277
277
  return Qnil;
278
278
  }
279
279
 
280
- static VALUE
281
- brkpt_remove(VALUE self, VALUE breakpoints, VALUE id_value)
282
- {
283
- int i;
284
- int id;
285
- VALUE breakpoint_object;
286
- breakpoint_t *breakpoint;
287
-
288
- if (breakpoints == Qnil) return Qnil;
289
-
290
- id = FIX2INT(id_value);
291
-
292
- for(i = 0; i < RARRAY_LEN(breakpoints); i++)
293
- {
294
- breakpoint_object = rb_ary_entry(breakpoints, i);
295
- Data_Get_Struct(breakpoint_object, breakpoint_t, breakpoint);
296
- if(breakpoint->id == id)
297
- {
298
- rb_ary_delete_at(breakpoints, i);
299
- return breakpoint_object;
300
- }
301
- }
302
- return Qnil;
303
- }
304
-
305
280
  int
306
281
  filename_cmp_impl(VALUE source, char *file)
307
282
  {
@@ -512,8 +487,6 @@ Init_breakpoint(VALUE mByebug)
512
487
  rb_define_alloc_func(cBreakpoint, brkpt_create);
513
488
  rb_define_method(cBreakpoint, "initialize", brkpt_initialize, 3);
514
489
 
515
- rb_define_singleton_method(cBreakpoint, "remove", brkpt_remove, 2);
516
-
517
490
  rb_define_method(cBreakpoint, "enabled?" , brkpt_enabled , 0);
518
491
  rb_define_method(cBreakpoint, "enabled=" , brkpt_set_enabled , 1);
519
492
  rb_define_method(cBreakpoint, "expr" , brkpt_expr , 0);
@@ -37,7 +37,7 @@ trace_print(rb_trace_arg_t *trace_arg, debug_context_t *dc)
37
37
  VALUE line = rb_tracearg_lineno(trace_arg);
38
38
  VALUE event = rb_tracearg_event(trace_arg);
39
39
  VALUE mid = rb_tracearg_method_id(trace_arg);
40
- for (i=0; i<dc->stack_size; i++) putc('|', stderr);
40
+ for (i=0; i<dc->calced_stack_size; i++) putc('|', stderr);
41
41
  fprintf(stderr, "[#%d] %s@%s:%d %s\n", dc->thnum,
42
42
  rb_id2name(SYM2ID(event)), RSTRING_PTR(path), NUM2INT(line),
43
43
  NIL_P(mid) ? "" : rb_id2name(SYM2ID(mid)));
@@ -194,7 +194,7 @@ line_event(VALUE trace_point, void *data)
194
194
 
195
195
  EVENT_COMMON
196
196
 
197
- if (dc->stack_size == 0) dc->stack_size++;
197
+ if (dc->calced_stack_size == 0) dc->calced_stack_size++;
198
198
 
199
199
  if (dc->last_line != rb_tracearg_lineno(trace_arg) ||
200
200
  dc->last_file != rb_tracearg_path(trace_arg))
@@ -208,12 +208,12 @@ line_event(VALUE trace_point, void *data)
208
208
  if (moved || !CTX_FL_TEST(dc, CTX_FL_FORCE_MOVE))
209
209
  {
210
210
  dc->steps = dc->steps <= 0 ? -1 : dc->steps - 1;
211
- if (dc->stack_size <= dc->dest_frame)
211
+ if (dc->calced_stack_size <= dc->dest_frame)
212
212
  {
213
213
  dc->lines = dc->lines <= 0 ? -1 : dc->lines - 1;
214
- if (dc->stack_size < dc->dest_frame)
214
+ if (dc->calced_stack_size < dc->dest_frame)
215
215
  {
216
- dc->dest_frame = dc->stack_size;
216
+ dc->dest_frame = dc->calced_stack_size;
217
217
  rb_funcall(mByebug, rb_intern("print"), 1,
218
218
  rb_str_new2("Next went up a frame because previous frame finished\n"));
219
219
  }
@@ -238,7 +238,7 @@ call_event(VALUE trace_point, void *data)
238
238
 
239
239
  EVENT_SETUP
240
240
 
241
- dc->stack_size++;
241
+ dc->calced_stack_size++;
242
242
 
243
243
  EVENT_COMMON
244
244
 
@@ -265,11 +265,11 @@ return_event(VALUE trace_point, void *data)
265
265
  {
266
266
  EVENT_SETUP
267
267
 
268
- if (dc->stack_size > 0) dc->stack_size--;
268
+ if (dc->calced_stack_size > 0) dc->calced_stack_size--;
269
269
 
270
270
  EVENT_COMMON
271
271
 
272
- if (dc->stack_size + 1 == dc->before_frame)
272
+ if (dc->calced_stack_size + 1 == dc->before_frame)
273
273
  {
274
274
  VALUE file, line;
275
275
 
@@ -279,7 +279,7 @@ return_event(VALUE trace_point, void *data)
279
279
  call_at_return(context, dc, file, line);
280
280
  }
281
281
 
282
- if (dc->stack_size + 1 == dc->after_frame)
282
+ if (dc->calced_stack_size + 1 == dc->after_frame)
283
283
  {
284
284
  reset_stepping_stop_points(dc);
285
285
  dc->steps = 1;
@@ -293,7 +293,7 @@ c_call_event(VALUE trace_point, void *data)
293
293
  {
294
294
  EVENT_SETUP
295
295
 
296
- dc->stack_size++;
296
+ dc->calced_stack_size++;
297
297
 
298
298
  EVENT_COMMON
299
299
 
@@ -305,7 +305,7 @@ c_return_event(VALUE trace_point, void *data)
305
305
  {
306
306
  EVENT_SETUP
307
307
 
308
- if (dc->stack_size > 0) dc->stack_size--;
308
+ if (dc->calced_stack_size > 0) dc->calced_stack_size--;
309
309
 
310
310
  EVENT_COMMON
311
311
 
@@ -346,7 +346,7 @@ raise_event(VALUE trace_point, void *data)
346
346
 
347
347
  expn_class = rb_obj_class(err);
348
348
 
349
- if (catchpoints == Qnil || dc->stack_size == 0 ||
349
+ if (catchpoints == Qnil || dc->calced_stack_size == 0 ||
350
350
  CTX_FL_TEST(dc, CTX_FL_CATCHING) ||
351
351
  RHASH_TBL(catchpoints)->num_entries == 0)
352
352
  {
@@ -607,9 +607,6 @@ bb_load(int argc, VALUE *argv, VALUE self)
607
607
 
608
608
  if (RTEST(stop)) dc->steps = 1;
609
609
 
610
- /* Reset stack size to ignore byebug's own frames */
611
- dc->stack_size = 0;
612
-
613
610
  /* Initializing $0 to the script's path */
614
611
  ruby_script(RSTRING_PTR(file));
615
612
  rb_load_protect(file, 0, &state);
@@ -29,7 +29,7 @@ typedef enum {
29
29
  } ctx_stop_reason;
30
30
 
31
31
  typedef struct {
32
- int stack_size;
32
+ int calced_stack_size;
33
33
  int flags;
34
34
  ctx_stop_reason stop_reason;
35
35
 
@@ -55,15 +55,15 @@ context_create(VALUE thread)
55
55
  {
56
56
  debug_context_t *context = ALLOC(debug_context_t);
57
57
 
58
- context->last_file = Qnil;
59
- context->last_line = Qnil;
60
- context->flags = 0;
61
- context->stack_size = real_stack_size();
62
- context->thnum = ++thnum_max;
63
- context->thread = thread;
58
+ context->last_file = Qnil;
59
+ context->last_line = Qnil;
60
+ context->flags = 0;
61
+ context->calced_stack_size = real_stack_size();
62
+ context->thnum = ++thnum_max;
63
+ context->thread = thread;
64
64
  reset_stepping_stop_points(context);
65
- context->stop_reason = CTX_STOP_NONE;
66
- context->backtrace = Qnil;
65
+ context->stop_reason = CTX_STOP_NONE;
66
+ context->backtrace = Qnil;
67
67
 
68
68
  if (rb_obj_class(thread) == cDebugThread) CTX_FL_SET(context, CTX_FL_IGNORE);
69
69
 
@@ -192,16 +192,17 @@ call_with_debug_inspector(struct call_with_inspection_data *data)
192
192
  #define FRAME_SETUP \
193
193
  debug_context_t *context; \
194
194
  VALUE frame_no; \
195
- int frame_n; \
195
+ int frame_n, stack_size; \
196
196
  Data_Get_Struct(self, debug_context_t, context); \
197
197
  if (!rb_scan_args(argc, argv, "01", &frame_no)) \
198
198
  frame_n = 0; \
199
199
  else \
200
200
  frame_n = FIX2INT(frame_no); \
201
- if (frame_n < 0 || frame_n >= real_stack_size(rb_thread_current())) \
201
+ stack_size = real_stack_size(); \
202
+ if (frame_n < 0 || frame_n >= stack_size) \
202
203
  { \
203
204
  rb_raise(rb_eArgError, "Invalid frame number %d, stack (0...%d)", \
204
- frame_n, real_stack_size(rb_thread_current() - 1)); \
205
+ frame_n, stack_size - 1); \
205
206
  } \
206
207
 
207
208
  /*
@@ -349,17 +350,20 @@ Context_resume(VALUE self)
349
350
 
350
351
  /*
351
352
  * call-seq:
352
- * context.stack_size-> int
353
+ * context.calced_stack_size-> int
353
354
  *
354
- * Returns the size of the context stack.
355
+ * Returns the calculated size of the context stack.
356
+ *
357
+ * NOTE: it shouldn't be necessary to expose this, this is only done to ease
358
+ * the detection of TracePoint API bugs.
355
359
  */
356
360
  static inline VALUE
357
- Context_stack_size(VALUE self)
361
+ Context_calced_stack_size(VALUE self)
358
362
  {
359
363
  debug_context_t *context;
360
364
  Data_Get_Struct(self, debug_context_t, context);
361
365
 
362
- return INT2FIX(context->stack_size);
366
+ return INT2FIX(context->calced_stack_size);
363
367
  }
364
368
 
365
369
  static VALUE
@@ -431,12 +435,13 @@ static VALUE
431
435
  Context_step_out(VALUE self, VALUE frame)
432
436
  {
433
437
  debug_context_t *context;
438
+
434
439
  Data_Get_Struct(self, debug_context_t, context);
435
440
 
436
- if (FIX2INT(frame) < 0 || FIX2INT(frame) >= context->stack_size)
441
+ if (FIX2INT(frame) < 0 || FIX2INT(frame) >= context->calced_stack_size)
437
442
  rb_raise(rb_eRuntimeError, "Stop frame is out of range.");
438
443
 
439
- context->after_frame = context->stack_size - FIX2INT(frame);
444
+ context->after_frame = context->calced_stack_size - FIX2INT(frame);
440
445
 
441
446
  return frame;
442
447
  }
@@ -458,15 +463,15 @@ Context_step_over(int argc, VALUE *argv, VALUE self)
458
463
 
459
464
  Data_Get_Struct(self, debug_context_t, context);
460
465
 
461
- if (context->stack_size == 0)
466
+ if (context->calced_stack_size == 0)
462
467
  rb_raise(rb_eRuntimeError, "No frames collected.");
463
468
 
464
469
  rb_scan_args(argc, argv, "12", &lines, &frame, &force);
465
- context->lines = FIX2INT(lines);
466
-
467
- if (FIX2INT(frame) < 0 || FIX2INT(frame) >= context->stack_size)
470
+ if (FIX2INT(frame) < 0 || FIX2INT(frame) >= context->calced_stack_size)
468
471
  rb_raise(rb_eRuntimeError, "Destination frame is out of range.");
469
- context->dest_frame = context->stack_size - FIX2INT(frame);
472
+
473
+ context->lines = FIX2INT(lines);
474
+ context->dest_frame = context->calced_stack_size - FIX2INT(frame);
470
475
 
471
476
  if (RTEST(force))
472
477
  CTX_FL_SET(context, CTX_FL_FORCE_MOVE);
@@ -487,12 +492,12 @@ static VALUE
487
492
  Context_stop_return(VALUE self, VALUE frame)
488
493
  {
489
494
  debug_context_t *context;
490
- Data_Get_Struct(self, debug_context_t, context);
491
495
 
492
- if (FIX2INT(frame) < 0 || FIX2INT(frame) >= context->stack_size)
496
+ Data_Get_Struct(self, debug_context_t, context);
497
+ if (FIX2INT(frame) < 0 || FIX2INT(frame) >= context->calced_stack_size)
493
498
  rb_raise(rb_eRuntimeError, "Stop frame is out of range.");
494
499
 
495
- context->before_frame = context->stack_size - FIX2INT(frame);
500
+ context->before_frame = context->calced_stack_size - FIX2INT(frame);
496
501
 
497
502
  return frame;
498
503
  }
@@ -628,27 +633,27 @@ Init_context(VALUE mByebug)
628
633
  {
629
634
  cContext = rb_define_class_under(mByebug, "Context", rb_cObject);
630
635
 
631
- rb_define_method(cContext, "dead?" , Context_dead , 0);
632
- rb_define_method(cContext, "frame_binding", Context_frame_binding, -1);
633
- rb_define_method(cContext, "frame_class" , Context_frame_class , -1);
634
- rb_define_method(cContext, "frame_file" , Context_frame_file , -1);
635
- rb_define_method(cContext, "frame_line" , Context_frame_line , -1);
636
- rb_define_method(cContext, "frame_method" , Context_frame_method , -1);
637
- rb_define_method(cContext, "frame_self" , Context_frame_self , -1);
638
- rb_define_method(cContext, "ignored?" , Context_ignored , 0);
639
- rb_define_method(cContext, "resume" , Context_resume , 0);
640
- rb_define_method(cContext, "stack_size" , Context_stack_size , 0);
641
- rb_define_method(cContext, "step_into" , Context_step_into , -1);
642
- rb_define_method(cContext, "step_out" , Context_step_out , 1);
643
- rb_define_method(cContext, "step_over" , Context_step_over , -1);
644
- rb_define_method(cContext, "stop_return" , Context_stop_return , 1);
645
- rb_define_method(cContext, "stop_reason" , Context_stop_reason , 0);
646
- rb_define_method(cContext, "suspend" , Context_suspend , 0);
647
- rb_define_method(cContext, "suspended?" , Context_is_suspended , 0);
648
- rb_define_method(cContext, "thnum" , Context_thnum , 0);
649
- rb_define_method(cContext, "thread" , Context_thread , 0);
650
- rb_define_method(cContext, "tracing" , Context_tracing , 0);
651
- rb_define_method(cContext, "tracing=" , Context_set_tracing , 1);
636
+ rb_define_method(cContext, "dead?" , Context_dead , 0);
637
+ rb_define_method(cContext, "frame_binding" , Context_frame_binding , -1);
638
+ rb_define_method(cContext, "frame_class" , Context_frame_class , -1);
639
+ rb_define_method(cContext, "frame_file" , Context_frame_file , -1);
640
+ rb_define_method(cContext, "frame_line" , Context_frame_line , -1);
641
+ rb_define_method(cContext, "frame_method" , Context_frame_method , -1);
642
+ rb_define_method(cContext, "frame_self" , Context_frame_self , -1);
643
+ rb_define_method(cContext, "ignored?" , Context_ignored , 0);
644
+ rb_define_method(cContext, "resume" , Context_resume , 0);
645
+ rb_define_method(cContext, "calced_stack_size", Context_calced_stack_size, 0);
646
+ rb_define_method(cContext, "step_into" , Context_step_into , -1);
647
+ rb_define_method(cContext, "step_out" , Context_step_out , 1);
648
+ rb_define_method(cContext, "step_over" , Context_step_over , -1);
649
+ rb_define_method(cContext, "stop_return" , Context_stop_return , 1);
650
+ rb_define_method(cContext, "stop_reason" , Context_stop_reason , 0);
651
+ rb_define_method(cContext, "suspend" , Context_suspend , 0);
652
+ rb_define_method(cContext, "suspended?" , Context_is_suspended , 0);
653
+ rb_define_method(cContext, "thnum" , Context_thnum , 0);
654
+ rb_define_method(cContext, "thread" , Context_thread , 0);
655
+ rb_define_method(cContext, "tracing" , Context_tracing , 0);
656
+ rb_define_method(cContext, "tracing=" , Context_set_tracing , 1);
652
657
 
653
658
  cDebugThread = rb_define_class_under(mByebug, "DebugThread", rb_cThread);
654
659
  rb_define_singleton_method(cDebugThread, "inherited", DebugThread_inherited, 1);
@@ -9,7 +9,7 @@ end
9
9
 
10
10
  if RbConfig::MAKEFILE_CONFIG['CC'] =~ /gcc/
11
11
  $CFLAGS ||= ''
12
- $CFLAGS += ' -Wall -Werror'
12
+ $CFLAGS += ' -Wall -Werror -Wno-unused-parameter'
13
13
  $CFLAGS += ' -gdwarf-2 -g3' if ENV['debug']
14
14
  end
15
15
 
@@ -65,8 +65,13 @@ module Byebug
65
65
  breakpoint
66
66
  end
67
67
 
68
+ #
69
+ # Remove a breakpoint
70
+ #
71
+ # @param [integer] breakpoint number
72
+ #
68
73
  def remove_breakpoint(id)
69
- Breakpoint.remove breakpoints, id
74
+ breakpoints.delete_at(id)
70
75
  end
71
76
 
72
77
  def interface=(value)
@@ -190,7 +195,7 @@ module Byebug
190
195
  end
191
196
 
192
197
  def handle_post_mortem(exp)
193
- return if !exp || !exp.__bb_context || exp.__bb_context.stack_size == 0
198
+ return if !exp || !exp.__bb_context || !exp.__bb_context.calced_stack_size
194
199
  orig_tracing = Byebug.tracing?
195
200
  Byebug.tracing = false
196
201
  Byebug.last_exception = exp
@@ -214,7 +219,7 @@ module Kernel
214
219
  def byebug(steps_into = 1, steps_out = 2)
215
220
  Byebug.start
216
221
  Byebug.run_init_script(StringIO.new)
217
- if Byebug.current_context.stack_size > 2
222
+ if Byebug.current_context.calced_stack_size > 2
218
223
  Byebug.current_context.stop_return steps_out if steps_out >= 1
219
224
  end
220
225
  Byebug.current_context.step_into steps_into if steps_into >= 0
@@ -168,7 +168,7 @@ module Byebug
168
168
  register_setting_var(:forcestep, false)
169
169
  register_setting_var(:fullpath, true)
170
170
  register_setting_var(:listsize, 10)
171
- register_setting_var(:stack_trace_on_error, false)
171
+ register_setting_var(:stack_on_error, false)
172
172
  register_setting_var(:linetrace_plus, false)
173
173
  cols = terminal_width || 160
174
174
  register_setting_var(:width, cols > 10 ? cols : 160)
@@ -196,7 +196,7 @@ module Byebug
196
196
  begin
197
197
  eval(str, b)
198
198
  rescue StandardError, ScriptError => e
199
- if Command.settings[:stack_trace_on_error]
199
+ if Command.settings[:stack_on_error]
200
200
  at = eval("Thread.current.backtrace_locations", b)
201
201
  print "#{at.shift}: #{e.class} Exception(#{e.message})\n"
202
202
  for i in at
@@ -241,18 +241,17 @@ module Byebug
241
241
  # Use Byebug.settings[] and Byebug.settings[]= methods to query and set
242
242
  # byebug settings. These settings are available:
243
243
  #
244
- # :autoeval - evaluates input in the current binding if it's not
245
- # recognized as a byebug command
246
- # :autoirb - automatically calls 'irb' command on breakpoint
247
- # :autolist - automatically calls 'list' command on breakpoint
248
- # :autoreload - makes 'list' command always display up-to-date
249
- # source code
250
- # :frame_class_names - displays method's class name when showing frame
251
- # stack
252
- # :forcestep - stepping command always move to the new line
253
- # :fullpath - displays full paths when showing frame stack
254
- # :stack_trace_on_error - shows full stack trace if eval command results in
255
- # an exception
244
+ # :autoeval - evaluates input in the current binding if it's not
245
+ # recognized as a byebug command
246
+ # :autoirb - automatically calls 'irb' command on breakpoint
247
+ # :autolist - automatically calls 'list' command on breakpoint
248
+ # :autoreload - makes 'list' command always display up-to-date source
249
+ # code
250
+ # :frame_class_names - displays method's class name when showing frame stack
251
+ # :forcestep - stepping command always move to the new line
252
+ # :fullpath - displays full paths when showing frame stack
253
+ # :stack_on_error - shows full stack trace if eval command results in an
254
+ # exception
256
255
  #
257
256
  def self.settings
258
257
  Command.settings
@@ -10,10 +10,10 @@ module Byebug
10
10
  end
11
11
 
12
12
  def execute
13
- max_frame = @state.context.stack_size - @state.frame_pos
14
13
  if not @match[1]
15
14
  frame_pos = @state.frame_pos
16
15
  else
16
+ max_frame = Context.stack_size - @state.frame_pos
17
17
  frame_pos = get_int(@match[1], "finish", 0, max_frame-1, 0)
18
18
  return nil unless frame_pos
19
19
  end
@@ -8,7 +8,7 @@ module Byebug
8
8
 
9
9
  def switch_to_frame(frame_no)
10
10
  if frame_no < 0
11
- abs_frame_no = @state.context.stack_size + frame_no
11
+ abs_frame_no = Context.stack_size + frame_no
12
12
  else
13
13
  abs_frame_no = frame_no
14
14
  end
@@ -20,7 +20,7 @@ module Byebug
20
20
  step = jump_no/total_jumps
21
21
  loop do
22
22
  new_pos += step
23
- return new_pos if new_pos < 0 || new_pos >= @state.context.stack_size
23
+ return new_pos if new_pos < 0 || new_pos >= Context.stack_size
24
24
 
25
25
  next if c_frame?(new_pos)
26
26
 
@@ -39,7 +39,7 @@ module Byebug
39
39
  end
40
40
 
41
41
  return errmsg "Can't navigate beyond the oldest frame\n" if
42
- abs_frame_pos >= @state.context.stack_size
42
+ abs_frame_pos >= Context.stack_size
43
43
  return errmsg "Can't navigate beyond the newest frame\n" if
44
44
  abs_frame_pos < 0
45
45
 
@@ -99,10 +99,10 @@ module Byebug
99
99
  end
100
100
 
101
101
  def print_backtrace
102
- realsize = Context.real_stack_size
103
- size = @state.context.stack_size
104
- if size != realsize
105
- errmsg "Byebug's stacksize (#{size}) should be #{realsize}. " \
102
+ realsize = Context.stack_size
103
+ calcedsize = @state.context.calced_stack_size
104
+ if calcedsize != realsize
105
+ errmsg "Byebug's stacksize (#{calcedsize}) should be #{realsize}. " \
106
106
  "This might be a bug in byebug or ruby's debugging API's\n"
107
107
  end
108
108
  (0...realsize).each do |idx|
@@ -53,7 +53,7 @@ module Byebug
53
53
  when /^post_mortem$/
54
54
  Byebug.post_mortem = setting_value
55
55
  when /^autoeval|autoreload|basename|forcestep|fullpath|linetrace_plus|
56
- testing|stack_trace_on_error$/x
56
+ testing|stack_on_error$/x
57
57
  Command.settings[setting_name.to_sym] = setting_value
58
58
  else
59
59
  return print "Unknown setting #{@match[1]}.\n"
@@ -61,7 +61,6 @@ module Byebug
61
61
  end
62
62
  end
63
63
 
64
-
65
64
  # Implements byebug "set" command.
66
65
  class SetCommand < Command
67
66
  SubcmdStruct2 = Struct.new(:name,
@@ -91,7 +90,7 @@ module Byebug
91
90
  'Set line execution tracing to show different lines'],
92
91
  ['listsize', 3, false, 'Set number of source lines to list by default'],
93
92
  ['post_mortem', 2, true, 'Enable post-mortem mode'],
94
- ['stack_trace_on_error', 1, true,
93
+ ['stack_on_error', 1, true,
95
94
  'Display stack trace when "eval" raises exception'],
96
95
  ['verbose', 1, true,
97
96
  'Enable verbose output of TracePoint API events is enabled'],
@@ -128,8 +128,8 @@ module Byebug
128
128
  when /^post_mortem$/
129
129
  on_off = Byebug.post_mortem?
130
130
  return "post-mortem mode is #{show_onoff(on_off)}"
131
- when /^stack_trace_on_error$/
132
- on_off = Command.settings[:stack_trace_on_error]
131
+ when /^stack_on_error$/
132
+ on_off = Command.settings[:stack_on_error]
133
133
  return "Displaying stack trace is #{show_onoff(on_off)}."
134
134
  when /^verbose$/
135
135
  on_off = Byebug.verbose
@@ -176,7 +176,7 @@ module Byebug
176
176
  ['listsize', 3, 'Show number of source lines to list by default'],
177
177
  ['post-mortem', 3, 'Show whether we should go into post-mortem ' \
178
178
  'debugging on an uncaught exception'],
179
- ['stack_trace_on_error', 1, 'Show whether a stack trace is displayed ' \
179
+ ['stack_on_error', 1, 'Show whether a stack trace is displayed ' \
180
180
  'when "eval" raises an exception'],
181
181
  ['verbose', 4, true,
182
182
  'Show whether verbose output for debugging byebug itself is enabled'],
@@ -3,7 +3,7 @@ module Byebug
3
3
  class Context
4
4
 
5
5
  class << self
6
- def real_stack_size
6
+ def stack_size
7
7
  if backtrace = Thread.current.backtrace_locations
8
8
  backtrace.drop_while { |l| ignored(l.path) || l.path == '(eval)' }
9
9
  .take_while { |l| !ignored(l.path) }
@@ -11,6 +11,12 @@ module Byebug
11
11
  end
12
12
  end
13
13
 
14
+ def real_stack_size
15
+ if backtrace = Thread.current.backtrace_locations
16
+ backtrace.size
17
+ end
18
+ end
19
+
14
20
  def ignored(path)
15
21
  IGNORED_FILES.include?(path)
16
22
  end
@@ -87,13 +87,7 @@ module Byebug
87
87
  file = CommandProcessor.canonic_file(context.frame_file(0))
88
88
  line = context.frame_line(0)
89
89
  print "Catchpoint at %s:%d: `%s' (%s)\n", file, line, excpt, excpt.class
90
- fs = context.stack_size
91
- tb = caller(0)[-fs..-1]
92
- if tb
93
- for i in tb
94
- print "\tfrom %s\n", i
95
- end
96
- end
90
+ print_backtrace
97
91
  end
98
92
  protect :at_catchpoint
99
93
 
@@ -1,3 +1,3 @@
1
1
  module Byebug
2
- VERSION = '2.2.0'
2
+ VERSION = '2.2.1'
3
3
  end
@@ -2882,12 +2882,10 @@ Return the filename of the location of the indicated frame position.
2882
2882
  @vindex @code{Byebug.context.frame_method}
2883
2883
  Symbol of the method name of the indicated frame position.
2884
2884
 
2885
- @item Byebug.context.stack_size
2886
- @vindex @code{Byebug.context.stack_size}
2887
- Return the number the size of the frame stack. Note this may be less
2888
- that the actual frame stack size if byebug recording
2889
- (@code{Byebug.start}) was turned on at after some blocks were added
2890
- and not finished when the @code{Byebug.start} was issued.
2885
+ @item Byebug.context.calced_stack_size
2886
+ @vindex @code{Byebug.context.calced_stack_size}
2887
+ Returns the stack size calculated by byebug. This is initialized when byebug is
2888
+ started and after that is kept up-to-date using the TracePoint API events.
2891
2889
  @end table
2892
2890
 
2893
2891
  @node Byebug.settings
@@ -2926,7 +2924,7 @@ Boolean. @xref{Fullpath}.
2926
2924
  Fixnum. Number of lines to show in a @code{list} command. @xref{Listsize}.
2927
2925
  @item :autoreload
2928
2926
  Boolean. True if we should reread the source every time it changes. @xref{Autoreload}.
2929
- @item :stack_trace_on_error
2927
+ @item :stack_on_error
2930
2928
  Boolean. True if we should produce a stack trace on eval errors. @xref{Trace}.
2931
2929
  @item :width
2932
2930
  Fixnum. Number of characters byebug thinks are in a line. @xref{Width}.
@@ -53,7 +53,7 @@ class TestEval < TestDsl::TestCase
53
53
 
54
54
  describe 'stack trace on error' do
55
55
  describe 'when enabled' do
56
- temporary_change_hash Byebug.settings, :stack_trace_on_error, true
56
+ temporary_change_hash Byebug.settings, :stack_on_error, true
57
57
 
58
58
  it 'must show a stack trace' do
59
59
  enter 'eval 2 / 0'
@@ -64,7 +64,7 @@ class TestEval < TestDsl::TestCase
64
64
  end
65
65
 
66
66
  describe 'when disabled' do
67
- temporary_change_hash Byebug.settings, :stack_trace_on_error, false
67
+ temporary_change_hash Byebug.settings, :stack_on_error, false
68
68
 
69
69
  it 'must only show exception' do
70
70
  enter 'eval 2 / 0'
@@ -115,9 +115,9 @@ class TestShow < TestDsl::TestCase
115
115
  end
116
116
  end
117
117
 
118
- describe 'stack_trace_on_error' do
119
- it 'must show stack_trace_on_error' do
120
- enter 'show stack_trace_on_error'
118
+ describe 'stack_on_error' do
119
+ it 'must show stack_on_error' do
120
+ enter 'show stack_on_error'
121
121
  debug_file 'show'
122
122
  check_output_includes 'Displaying stack trace is off.'
123
123
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: byebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rodriguez
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-09-22 00:00:00.000000000 Z
13
+ date: 2013-09-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: columnize