byebug 3.5.0 → 3.5.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 +4 -4
- data/CHANGELOG.md +6 -0
- data/ext/byebug/byebug.c +43 -43
- data/lib/byebug/commands/condition.rb +5 -3
- data/lib/byebug/commands/list.rb +5 -5
- data/lib/byebug/helper.rb +4 -1
- data/lib/byebug/history.rb +3 -3
- data/lib/byebug/interfaces/local_interface.rb +1 -1
- data/lib/byebug/version.rb +1 -1
- data/test/commands/condition_test.rb +5 -2
- data/test/commands/restart_test.rb +3 -5
- data/test/support/test_interface.rb +5 -5
- data/test/support/utils.rb +13 -5
- data/test/test_helper.rb +1 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93b7b0bff9694ec5f6674d3e7c7aa3de420cc0f9
|
4
|
+
data.tar.gz: ed65140ba0ef5b5f84253e0980938ffa84739c40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c88d13966721950651f3713cbca994af3d70d11c0337e48c46c5bc364220835b3908ceb69be70b962356495a00118e7f4fdbc66ff7f8b504ebdd7931b48151c3
|
7
|
+
data.tar.gz: 579d418f58bab70f03c0deafa48695b5879d64590b84732b619891c5cc45b217111f2388b10db5b8de2c6dd9dddd0ee482a4804344419ed9409bb1f7202169c4
|
data/CHANGELOG.md
CHANGED
data/ext/byebug/byebug.c
CHANGED
@@ -18,6 +18,45 @@ VALUE locker = Qnil;
|
|
18
18
|
/* Hash table with active threads and their associated contexts */
|
19
19
|
VALUE threads = Qnil;
|
20
20
|
|
21
|
+
/*
|
22
|
+
* call-seq:
|
23
|
+
* Byebug.breakpoints -> array
|
24
|
+
*
|
25
|
+
* Returns an array of breakpoints.
|
26
|
+
*/
|
27
|
+
static VALUE
|
28
|
+
bb_breakpoints(VALUE self)
|
29
|
+
{
|
30
|
+
if (NIL_P(breakpoints))
|
31
|
+
breakpoints = rb_ary_new();
|
32
|
+
|
33
|
+
return breakpoints;
|
34
|
+
}
|
35
|
+
|
36
|
+
/*
|
37
|
+
* call-seq:
|
38
|
+
* Byebug.catchpoints -> array
|
39
|
+
*
|
40
|
+
* Returns an array of catchpoints.
|
41
|
+
*/
|
42
|
+
static VALUE
|
43
|
+
bb_catchpoints(VALUE self)
|
44
|
+
{
|
45
|
+
return catchpoints;
|
46
|
+
}
|
47
|
+
|
48
|
+
/*
|
49
|
+
* call-seq:
|
50
|
+
* Byebug.raised_exception -> exception
|
51
|
+
*
|
52
|
+
* Returns raised exception when in post_mortem mode.
|
53
|
+
*/
|
54
|
+
static VALUE
|
55
|
+
bb_raised_exception(VALUE self)
|
56
|
+
{
|
57
|
+
return raised_exception;
|
58
|
+
}
|
59
|
+
|
21
60
|
#define IS_STARTED (catchpoints != Qnil)
|
22
61
|
static void
|
23
62
|
check_started()
|
@@ -182,7 +221,7 @@ call_at_line_check(VALUE context_obj, debug_context_t *dc,
|
|
182
221
|
static void
|
183
222
|
line_event(VALUE trace_point, void *data)
|
184
223
|
{
|
185
|
-
VALUE breakpoint, file, line, binding;
|
224
|
+
VALUE breakpoint, file, line, binding, self;
|
186
225
|
int moved = 0;
|
187
226
|
|
188
227
|
EVENT_SETUP
|
@@ -191,6 +230,7 @@ line_event(VALUE trace_point, void *data)
|
|
191
230
|
file = rb_tracearg_path(trace_arg);
|
192
231
|
line = rb_tracearg_lineno(trace_arg);
|
193
232
|
binding = rb_tracearg_binding(trace_arg);
|
233
|
+
self = rb_tracearg_self(trace_arg);
|
194
234
|
|
195
235
|
EVENT_COMMON
|
196
236
|
|
@@ -223,7 +263,7 @@ line_event(VALUE trace_point, void *data)
|
|
223
263
|
if (dc->steps == 0 || dc->lines == 0 ||
|
224
264
|
(CTX_FL_TEST(dc, CTX_FL_ENABLE_BKPT) &&
|
225
265
|
(!NIL_P(
|
226
|
-
breakpoint = find_breakpoint_by_pos(
|
266
|
+
breakpoint = find_breakpoint_by_pos(bb_breakpoints(self), file, line, binding)))))
|
227
267
|
{
|
228
268
|
call_at_line_check(context, dc, breakpoint, file, line);
|
229
269
|
}
|
@@ -254,7 +294,7 @@ call_event(VALUE trace_point, void *data)
|
|
254
294
|
file = rb_tracearg_path(trace_arg);
|
255
295
|
line = rb_tracearg_lineno(trace_arg);
|
256
296
|
|
257
|
-
breakpoint = find_breakpoint_by_method(
|
297
|
+
breakpoint = find_breakpoint_by_method(bb_breakpoints(self), klass, mid, binding, self);
|
258
298
|
if (breakpoint != Qnil)
|
259
299
|
{
|
260
300
|
call_at_breakpoint(context, dc, breakpoint);
|
@@ -578,7 +618,6 @@ bb_start(VALUE self)
|
|
578
618
|
else
|
579
619
|
{
|
580
620
|
locker = Qnil;
|
581
|
-
breakpoints = rb_ary_new();
|
582
621
|
catchpoints = rb_hash_new();
|
583
622
|
threads = create_threads_table();
|
584
623
|
|
@@ -713,33 +752,6 @@ bb_set_post_mortem(VALUE self, VALUE value)
|
|
713
752
|
return value;
|
714
753
|
}
|
715
754
|
|
716
|
-
/*
|
717
|
-
* call-seq:
|
718
|
-
* Byebug.breakpoints -> array
|
719
|
-
*
|
720
|
-
* Returns an array of breakpoints.
|
721
|
-
*/
|
722
|
-
static VALUE
|
723
|
-
bb_breakpoints(VALUE self)
|
724
|
-
{
|
725
|
-
if (NIL_P(breakpoints))
|
726
|
-
breakpoints = rb_ary_new();
|
727
|
-
|
728
|
-
return breakpoints;
|
729
|
-
}
|
730
|
-
|
731
|
-
/*
|
732
|
-
* call-seq:
|
733
|
-
* Byebug.catchpoints -> array
|
734
|
-
*
|
735
|
-
* Returns an array of catchpoints.
|
736
|
-
*/
|
737
|
-
static VALUE
|
738
|
-
bb_catchpoints(VALUE self)
|
739
|
-
{
|
740
|
-
return catchpoints;
|
741
|
-
}
|
742
|
-
|
743
755
|
/*
|
744
756
|
* call-seq:
|
745
757
|
* Byebug.add_catchpoint(exception) -> exception
|
@@ -756,18 +768,6 @@ bb_add_catchpoint(VALUE self, VALUE value)
|
|
756
768
|
return value;
|
757
769
|
}
|
758
770
|
|
759
|
-
/*
|
760
|
-
* call-seq:
|
761
|
-
* Byebug.raised_exception -> exception
|
762
|
-
*
|
763
|
-
* Returns raised exception when in post_mortem mode.
|
764
|
-
*/
|
765
|
-
static VALUE
|
766
|
-
bb_raised_exception(VALUE self)
|
767
|
-
{
|
768
|
-
return raised_exception;
|
769
|
-
}
|
770
|
-
|
771
771
|
/*
|
772
772
|
* Document-class: Byebug
|
773
773
|
*
|
@@ -17,10 +17,12 @@ module Byebug
|
|
17
17
|
breakpoints = Byebug.breakpoints.sort_by { |b| b.id }
|
18
18
|
return errmsg('No breakpoints have been set') unless breakpoints.any?
|
19
19
|
|
20
|
-
pos, err = get_int(@match[1], 'Condition', 1
|
21
|
-
return errmsg(err)
|
20
|
+
pos, err = get_int(@match[1], 'Condition', 1)
|
21
|
+
return errmsg(err) if err
|
22
22
|
|
23
|
-
breakpoint = breakpoints.
|
23
|
+
breakpoint = breakpoints.find { |b| b.id == pos }
|
24
|
+
return errmsg('Invalid breakpoint id. Use "info breakpoint" to find ' \
|
25
|
+
'out the correct id') unless breakpoint
|
24
26
|
|
25
27
|
return errmsg("Incorrect expression \"#{@match[2]}\", " \
|
26
28
|
'breakpoint not changed') unless syntax_valid?(@match[2])
|
data/lib/byebug/commands/list.rb
CHANGED
@@ -68,7 +68,7 @@ module Byebug
|
|
68
68
|
# @return last line number to list
|
69
69
|
#
|
70
70
|
def set_range(size, max_line)
|
71
|
-
first = amend(lower(size, @match[1] || '+'),
|
71
|
+
first = amend(lower(size, @match[1] || '+'), max_line - size + 1)
|
72
72
|
|
73
73
|
[first, move(first, size - 1)]
|
74
74
|
end
|
@@ -78,10 +78,10 @@ module Byebug
|
|
78
78
|
return [-1, -1] if err
|
79
79
|
|
80
80
|
if input.split(/[-,]/)[1]
|
81
|
-
last,
|
81
|
+
last, _ = get_int(input.split(/[-,]/)[1], 'List', 1, max_line)
|
82
82
|
return [-1, -1] unless last
|
83
83
|
|
84
|
-
last = amend(last,
|
84
|
+
last = amend(last, max_line)
|
85
85
|
else
|
86
86
|
first -= (size / 2)
|
87
87
|
end
|
@@ -89,7 +89,7 @@ module Byebug
|
|
89
89
|
[first, last || move(first, size - 1)]
|
90
90
|
end
|
91
91
|
|
92
|
-
def amend(line,
|
92
|
+
def amend(line, max_line)
|
93
93
|
return 1 if line < 1
|
94
94
|
|
95
95
|
[max_line, line].min
|
@@ -111,7 +111,7 @@ module Byebug
|
|
111
111
|
def display_lines(min, max, lines)
|
112
112
|
puts "\n[#{min}, #{max}] in #{@state.file}"
|
113
113
|
|
114
|
-
(min..max).to_a.zip(lines[min-1..max-1]).map do |l|
|
114
|
+
(min..max).to_a.zip(lines[min - 1..max - 1]).map do |l|
|
115
115
|
mark = l[0] == @state.line ? '=> ' : ' '
|
116
116
|
puts format("#{mark}%#{max.to_s.size}d: %s", l[0], l[1])
|
117
117
|
end
|
data/lib/byebug/helper.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
module Byebug
|
2
|
+
#
|
3
|
+
# Miscelaneous Utilities
|
4
|
+
#
|
2
5
|
module MiscUtils
|
3
6
|
#
|
4
7
|
# Cross-platform way of finding an executable in the $PATH.
|
@@ -20,7 +23,7 @@ module Byebug
|
|
20
23
|
end
|
21
24
|
|
22
25
|
#
|
23
|
-
#
|
26
|
+
# Utilities to assist command parsing
|
24
27
|
#
|
25
28
|
module ParseFunctions
|
26
29
|
#
|
data/lib/byebug/history.rb
CHANGED
@@ -24,7 +24,7 @@ module Byebug
|
|
24
24
|
# Saves history to disk.
|
25
25
|
#
|
26
26
|
def save
|
27
|
-
n_cmds = Setting[:histsize] >
|
27
|
+
n_cmds = Setting[:histsize] > size ? size : Setting[:histsize]
|
28
28
|
|
29
29
|
open(Setting[:histfile], 'w') do |file|
|
30
30
|
n_cmds.times { file.puts(pop) }
|
@@ -37,7 +37,7 @@ module Byebug
|
|
37
37
|
# Discards history.
|
38
38
|
#
|
39
39
|
def clear
|
40
|
-
|
40
|
+
size.times { pop }
|
41
41
|
end
|
42
42
|
|
43
43
|
#
|
@@ -65,7 +65,7 @@ module Byebug
|
|
65
65
|
commands = Readline::HISTORY.to_a.last(show_size)
|
66
66
|
|
67
67
|
(self.size - show_size + 1..self.size).to_a.zip(commands).map do |l|
|
68
|
-
format(
|
68
|
+
format('%5d %s', l[0], l[1])
|
69
69
|
end.join("\n") + "\n"
|
70
70
|
end
|
71
71
|
|
data/lib/byebug/version.rb
CHANGED
@@ -74,9 +74,12 @@ module Byebug
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def test_shows_error_if_breakpoint_id_is_incorrect
|
77
|
-
enter 'break 7', 'cond
|
77
|
+
enter 'break 7', 'cond 2 b == 3'
|
78
78
|
|
79
|
-
debug_proc(@example)
|
79
|
+
debug_proc(@example)
|
80
|
+
check_error_includes \
|
81
|
+
'Invalid breakpoint id. ' \
|
82
|
+
'Use "info breakpoint" to find out the correct id'
|
80
83
|
end
|
81
84
|
end
|
82
85
|
end
|
@@ -24,17 +24,15 @@ module Byebug
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_restarts_with_manual_arguments
|
27
|
-
|
28
|
-
cmd = "#{BYEBUG_SCRIPT} #{Byebug.debugged_program} 1 2 3"
|
27
|
+
cmd = "ruby -rbyebug -I#{$LOAD_PATH.join(' -I')} test/test_helper.rb 1 2"
|
29
28
|
must_restart(cmd)
|
30
29
|
|
31
|
-
enter 'restart 1 2
|
30
|
+
enter 'restart 1 2'
|
32
31
|
debug_proc(@example)
|
33
32
|
check_output_includes "Re exec'ing:\n\t#{cmd}"
|
34
|
-
force_unset_const(Byebug, 'BYEBUG_SCRIPT')
|
35
33
|
end
|
36
34
|
|
37
|
-
def
|
35
|
+
def test_still_restarts_shows_messages_when_attached_to_running_program
|
38
36
|
must_restart
|
39
37
|
enter 'restart'
|
40
38
|
|
@@ -20,10 +20,10 @@ module Byebug
|
|
20
20
|
def read_command(*)
|
21
21
|
return readline(true) unless @input_queue.empty?
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
return unless test_block
|
24
|
+
|
25
|
+
test_block.call
|
26
|
+
self.test_block = nil
|
27
27
|
end
|
28
28
|
|
29
29
|
def puts(*args)
|
@@ -52,7 +52,7 @@ module Byebug
|
|
52
52
|
def readline(hist)
|
53
53
|
cmd = @input_queue.shift
|
54
54
|
cmd = cmd.is_a?(Proc) ? cmd.call : cmd
|
55
|
-
save_history(cmd)
|
55
|
+
save_history(cmd) if hist
|
56
56
|
cmd
|
57
57
|
end
|
58
58
|
end
|
data/test/support/utils.rb
CHANGED
@@ -82,6 +82,18 @@ module Byebug
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
#
|
86
|
+
# Set default settings for testing
|
87
|
+
#
|
88
|
+
def set_defaults
|
89
|
+
Byebug::Setting.load
|
90
|
+
|
91
|
+
Byebug::Setting[:autolist] = false
|
92
|
+
Byebug::Setting[:autosave] = false
|
93
|
+
Byebug::Setting[:testing] = true
|
94
|
+
Byebug::Setting[:width] = 80
|
95
|
+
end
|
96
|
+
|
85
97
|
def interface
|
86
98
|
Byebug.handler.interface
|
87
99
|
end
|
@@ -95,12 +107,8 @@ module Byebug
|
|
95
107
|
end
|
96
108
|
|
97
109
|
def force_set_const(klass, const, value)
|
98
|
-
force_unset_const(klass, const)
|
99
|
-
klass.const_set(const, value)
|
100
|
-
end
|
101
|
-
|
102
|
-
def force_unset_const(klass, const)
|
103
110
|
klass.send(:remove_const, const) if klass.const_defined?(const)
|
111
|
+
klass.const_set(const, value)
|
104
112
|
end
|
105
113
|
|
106
114
|
def change_line_in_file(file, line, new_line_content)
|
data/test/test_helper.rb
CHANGED
@@ -26,11 +26,7 @@ module Byebug
|
|
26
26
|
Byebug.breakpoints.clear if Byebug.breakpoints
|
27
27
|
Byebug.catchpoints.clear if Byebug.catchpoints
|
28
28
|
|
29
|
-
|
30
|
-
Byebug::Setting[:autolist] = false
|
31
|
-
Byebug::Setting[:autosave] = false
|
32
|
-
Byebug::Setting[:testing] = true
|
33
|
-
Byebug::Setting[:width] = 80
|
29
|
+
set_defaults
|
34
30
|
|
35
31
|
# Include test files as ignored files
|
36
32
|
glob_exp = File.expand_path('../../{lib,test/support}/**/*.rb', __FILE__)
|
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: 3.5.
|
4
|
+
version: 3.5.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: 2014-09-
|
13
|
+
date: 2014-09-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: columnize
|