byebug 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
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