byebug 1.8.2 → 2.0.0
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 +8 -1
- data/GUIDE.md +14 -22
- data/README.md +69 -6
- data/bin/byebug +3 -20
- data/ext/byebug/breakpoint.c +185 -101
- data/ext/byebug/byebug.c +393 -214
- data/ext/byebug/byebug.h +34 -15
- data/ext/byebug/context.c +327 -102
- data/ext/byebug/extconf.rb +1 -1
- data/ext/byebug/locker.c +54 -0
- data/ext/byebug/threads.c +113 -0
- data/lib/byebug.rb +19 -58
- data/lib/byebug/command.rb +18 -19
- data/lib/byebug/commands/breakpoints.rb +1 -4
- data/lib/byebug/commands/catchpoint.rb +1 -1
- data/lib/byebug/commands/condition.rb +1 -1
- data/lib/byebug/commands/control.rb +2 -3
- data/lib/byebug/commands/display.rb +2 -7
- data/lib/byebug/commands/edit.rb +1 -1
- data/lib/byebug/commands/enable.rb +12 -12
- data/lib/byebug/commands/eval.rb +4 -4
- data/lib/byebug/commands/finish.rb +1 -1
- data/lib/byebug/commands/frame.rb +12 -8
- data/lib/byebug/commands/info.rb +20 -52
- data/lib/byebug/commands/kill.rb +1 -5
- data/lib/byebug/commands/list.rb +2 -1
- data/lib/byebug/commands/quit.rb +1 -1
- data/lib/byebug/commands/repl.rb +2 -2
- data/lib/byebug/commands/save.rb +1 -1
- data/lib/byebug/commands/set.rb +84 -90
- data/lib/byebug/commands/show.rb +44 -53
- data/lib/byebug/commands/skip.rb +1 -1
- data/lib/byebug/commands/stepping.rb +5 -4
- data/lib/byebug/commands/threads.rb +202 -0
- data/lib/byebug/commands/trace.rb +1 -1
- data/lib/byebug/helper.rb +3 -3
- data/lib/byebug/interface.rb +2 -20
- data/lib/byebug/processor.rb +21 -100
- data/lib/byebug/remote.rb +3 -3
- data/lib/byebug/version.rb +1 -1
- data/old_doc/byebug.1 +0 -6
- data/old_doc/byebug.texi +29 -46
- data/test/breakpoints_test.rb +44 -65
- data/test/conditions_test.rb +0 -9
- data/test/continue_test.rb +2 -2
- data/test/display_test.rb +4 -23
- data/test/edit_test.rb +2 -16
- data/test/eval_test.rb +4 -13
- data/test/examples/thread.rb +32 -0
- data/test/finish_test.rb +1 -13
- data/test/frame_test.rb +5 -12
- data/test/help_test.rb +2 -12
- data/test/info_test.rb +8 -18
- data/test/kill_test.rb +1 -10
- data/test/list_test.rb +5 -14
- data/test/method_test.rb +1 -10
- data/test/post_mortem_test.rb +247 -14
- data/test/quit_test.rb +0 -9
- data/test/reload_test.rb +1 -15
- data/test/repl_test.rb +1 -9
- data/test/restart_test.rb +3 -18
- data/test/save_test.rb +1 -13
- data/test/set_test.rb +35 -32
- data/test/show_test.rb +8 -27
- data/test/source_test.rb +1 -8
- data/test/stepping_test.rb +65 -96
- data/test/support/test_dsl.rb +12 -17
- data/test/test_helper.rb +1 -1
- data/test/thread_test.rb +106 -0
- data/test/trace_test.rb +5 -17
- data/test/variables_test.rb +1 -10
- metadata +9 -7
- data/lib/byebug/commands/jump.rb +0 -52
- data/test/jump_test.rb +0 -77
- data/test/support/context.rb +0 -15
data/test/trace_test.rb
CHANGED
@@ -33,7 +33,7 @@ class TestTrace < TestDsl::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe 'when basename set' do
|
36
|
-
temporary_change_hash Byebug
|
36
|
+
temporary_change_hash Byebug.settings, :basename, true
|
37
37
|
|
38
38
|
it 'must correctly print file lines' do
|
39
39
|
enter 'tr on', 'cont 7', 'trace off'
|
@@ -47,9 +47,8 @@ class TestTrace < TestDsl::TestCase
|
|
47
47
|
it 'must show an error message if given subcommand is incorrect' do
|
48
48
|
enter 'trace bla'
|
49
49
|
debug_file 'trace'
|
50
|
-
|
51
|
-
'expecting "on", "off", "var" or "variable"; got: "bla"'
|
52
|
-
interface.error_queue
|
50
|
+
check_error_includes \
|
51
|
+
'expecting "on", "off", "var" or "variable"; got: "bla"'
|
53
52
|
end
|
54
53
|
|
55
54
|
describe 'disabling' do
|
@@ -96,25 +95,14 @@ class TestTrace < TestDsl::TestCase
|
|
96
95
|
it 'must show an error message if there is no such global variable' do
|
97
96
|
enter 'trace variable $foo'
|
98
97
|
debug_file 'trace'
|
99
|
-
|
100
|
-
'$foo is not a global variable.', interface.error_queue
|
98
|
+
check_error_includes '$foo is not a global variable.'
|
101
99
|
end
|
102
100
|
|
103
101
|
it 'must show an error message if subcommand is invalid' do
|
104
102
|
enter 'trace variable $bla foo'
|
105
103
|
debug_file 'trace'
|
106
|
-
|
107
|
-
'expecting "stop" or "nostop"; got "foo"', interface.error_queue
|
104
|
+
check_error_includes 'expecting "stop" or "nostop"; got "foo"'
|
108
105
|
end
|
109
106
|
end
|
110
107
|
end
|
111
|
-
|
112
|
-
describe 'Post Mortem' do
|
113
|
-
it 'must work in post-mortem mode' do
|
114
|
-
enter 'cont', 'trace on'
|
115
|
-
debug_file 'post_mortem'
|
116
|
-
check_output_includes 'line tracing is on.'
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
108
|
end
|
data/test/variables_test.rb
CHANGED
@@ -76,7 +76,7 @@ class TestVariables < TestDsl::TestCase
|
|
76
76
|
end
|
77
77
|
|
78
78
|
describe 'when width is too small' do
|
79
|
-
temporary_change_hash Byebug
|
79
|
+
temporary_change_hash Byebug.settings, :width, 20
|
80
80
|
|
81
81
|
it 'must cut long variable values according it' do
|
82
82
|
enter 'break 25', 'cont', 'var instance v'
|
@@ -105,13 +105,4 @@ class TestVariables < TestDsl::TestCase
|
|
105
105
|
skip('can\'t install ruby-internal gem')
|
106
106
|
end
|
107
107
|
end
|
108
|
-
|
109
|
-
describe 'Post Mortem' do
|
110
|
-
it 'must work in post-mortem mode' do
|
111
|
-
enter 'cont', 'var local'
|
112
|
-
debug_file 'post_mortem'
|
113
|
-
check_output_includes 'x => nil', 'z => 4'
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
108
|
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:
|
4
|
+
version: 2.0.0
|
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-08-
|
13
|
+
date: 2013-08-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: columnize
|
@@ -113,6 +113,8 @@ files:
|
|
113
113
|
- ext/byebug/byebug.h
|
114
114
|
- ext/byebug/context.c
|
115
115
|
- ext/byebug/extconf.rb
|
116
|
+
- ext/byebug/locker.c
|
117
|
+
- ext/byebug/threads.c
|
116
118
|
- lib/byebug.rb
|
117
119
|
- lib/byebug/command.rb
|
118
120
|
- lib/byebug/commands/breakpoints.rb
|
@@ -128,7 +130,6 @@ files:
|
|
128
130
|
- lib/byebug/commands/frame.rb
|
129
131
|
- lib/byebug/commands/help.rb
|
130
132
|
- lib/byebug/commands/info.rb
|
131
|
-
- lib/byebug/commands/jump.rb
|
132
133
|
- lib/byebug/commands/kill.rb
|
133
134
|
- lib/byebug/commands/list.rb
|
134
135
|
- lib/byebug/commands/method.rb
|
@@ -141,6 +142,7 @@ files:
|
|
141
142
|
- lib/byebug/commands/skip.rb
|
142
143
|
- lib/byebug/commands/source.rb
|
143
144
|
- lib/byebug/commands/stepping.rb
|
145
|
+
- lib/byebug/commands/threads.rb
|
144
146
|
- lib/byebug/commands/trace.rb
|
145
147
|
- lib/byebug/commands/variables.rb
|
146
148
|
- lib/byebug/context.rb
|
@@ -194,6 +196,7 @@ files:
|
|
194
196
|
- test/examples/show.rb
|
195
197
|
- test/examples/source.rb
|
196
198
|
- test/examples/stepping.rb
|
199
|
+
- test/examples/thread.rb
|
197
200
|
- test/examples/tmate.rb
|
198
201
|
- test/examples/trace.rb
|
199
202
|
- test/examples/variables.rb
|
@@ -201,7 +204,6 @@ files:
|
|
201
204
|
- test/frame_test.rb
|
202
205
|
- test/help_test.rb
|
203
206
|
- test/info_test.rb
|
204
|
-
- test/jump_test.rb
|
205
207
|
- test/kill_test.rb
|
206
208
|
- test/list_test.rb
|
207
209
|
- test/method_test.rb
|
@@ -216,11 +218,11 @@ files:
|
|
216
218
|
- test/source_test.rb
|
217
219
|
- test/stepping_test.rb
|
218
220
|
- test/support/breakpoint.rb
|
219
|
-
- test/support/context.rb
|
220
221
|
- test/support/matchers.rb
|
221
222
|
- test/support/test_dsl.rb
|
222
223
|
- test/support/test_interface.rb
|
223
224
|
- test/test_helper.rb
|
225
|
+
- test/thread_test.rb
|
224
226
|
- test/trace_test.rb
|
225
227
|
- test/variables_test.rb
|
226
228
|
homepage: http://github.com/deivid-rodriguez/byebug
|
@@ -284,6 +286,7 @@ test_files:
|
|
284
286
|
- test/examples/show.rb
|
285
287
|
- test/examples/source.rb
|
286
288
|
- test/examples/stepping.rb
|
289
|
+
- test/examples/thread.rb
|
287
290
|
- test/examples/tmate.rb
|
288
291
|
- test/examples/trace.rb
|
289
292
|
- test/examples/variables.rb
|
@@ -291,7 +294,6 @@ test_files:
|
|
291
294
|
- test/frame_test.rb
|
292
295
|
- test/help_test.rb
|
293
296
|
- test/info_test.rb
|
294
|
-
- test/jump_test.rb
|
295
297
|
- test/kill_test.rb
|
296
298
|
- test/list_test.rb
|
297
299
|
- test/method_test.rb
|
@@ -306,10 +308,10 @@ test_files:
|
|
306
308
|
- test/source_test.rb
|
307
309
|
- test/stepping_test.rb
|
308
310
|
- test/support/breakpoint.rb
|
309
|
-
- test/support/context.rb
|
310
311
|
- test/support/matchers.rb
|
311
312
|
- test/support/test_dsl.rb
|
312
313
|
- test/support/test_interface.rb
|
313
314
|
- test/test_helper.rb
|
315
|
+
- test/thread_test.rb
|
314
316
|
- test/trace_test.rb
|
315
317
|
- test/variables_test.rb
|
data/lib/byebug/commands/jump.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
module Byebug
|
2
|
-
|
3
|
-
# Implements byebug "jump" command
|
4
|
-
class JumpCommand < Command
|
5
|
-
self.allow_in_control = true
|
6
|
-
|
7
|
-
def numeric?(object)
|
8
|
-
true if Float(object) rescue false
|
9
|
-
end
|
10
|
-
|
11
|
-
def regexp
|
12
|
-
/^\s* j(?:ump)? (?:\s+(\S+))? \s* (?:\s+(\S+))? \s*$/ix
|
13
|
-
end
|
14
|
-
|
15
|
-
def execute
|
16
|
-
return errmsg "\"jump\" must be followed by a line number\n" unless @match[1]
|
17
|
-
return errmsg "Bad line number: " + @match[1] unless numeric?(@match[1])
|
18
|
-
|
19
|
-
line = @match[1].to_i
|
20
|
-
line = @state.context.frame_line(0) + line if @match[1][0] == '+' or @match[1][0] == '-'
|
21
|
-
return aprint @state.location if line == @state.context.frame_line(0)
|
22
|
-
|
23
|
-
file = @match[2]
|
24
|
-
file = @state.context.frame_file(file.to_i) if numeric?(file)
|
25
|
-
file = @state.context.frame_file(0) if !file
|
26
|
-
case Byebug.context.jump(line, file)
|
27
|
-
when 0
|
28
|
-
@state.proceed
|
29
|
-
when 1
|
30
|
-
errmsg "Not possible to jump from here\n"
|
31
|
-
when 2
|
32
|
-
errmsg "Couldn't find debugged frame\n"
|
33
|
-
when 3
|
34
|
-
errmsg "Couldn't find active code at " + file + ":" + line.to_s + "\n"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
class << self
|
39
|
-
def names
|
40
|
-
%w(jump)
|
41
|
-
end
|
42
|
-
|
43
|
-
def description
|
44
|
-
%{j[ump] line\tjump to line number (absolute)
|
45
|
-
j[ump] -line\tjump back to line (relative)
|
46
|
-
j[ump] +line\tjump ahead to line (relative)
|
47
|
-
|
48
|
-
Change the next line of code to be executed.}
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
data/test/jump_test.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
class TestJump < TestDsl::TestCase
|
4
|
-
|
5
|
-
describe "successful" do
|
6
|
-
it "must jump with absolute line number" do
|
7
|
-
skip("No jumping for now")
|
8
|
-
enter 'break 6', 'cont', "jump 8 #{fullpath('jump')}"
|
9
|
-
debug_file('jump') { $state.line.must_equal 8 }
|
10
|
-
end
|
11
|
-
|
12
|
-
it "must not initialize skipped variables during jump" do
|
13
|
-
skip("No jumping for now")
|
14
|
-
enter 'break 6', 'cont', "jump 8 #{fullpath('jump')}", 'next'
|
15
|
-
enter 'var local'
|
16
|
-
debug_file('jump')
|
17
|
-
check_output_includes "a => 2", "b => nil", "c => nil", "d => 5"
|
18
|
-
end
|
19
|
-
|
20
|
-
it "must jump with relative line number (-)" do
|
21
|
-
skip("No jumping for now")
|
22
|
-
enter 'break 8', 'cont', "jump -2 #{fullpath('jump')}"
|
23
|
-
debug_file('jump') { $state.line.must_equal 6 }
|
24
|
-
end
|
25
|
-
|
26
|
-
it "must jump with relative line number (+)" do
|
27
|
-
skip("No jumping for now")
|
28
|
-
enter 'break 8', 'cont', "jump +2 #{fullpath('jump')}"
|
29
|
-
debug_file('jump') { $state.line.must_equal 10 }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "errors" do
|
34
|
-
it "must show an error if line number is invalid" do
|
35
|
-
skip("No jumping for now")
|
36
|
-
enter 'jump bla'
|
37
|
-
debug_file('jump')
|
38
|
-
check_output_includes "Bad line number: bla", interface.error_queue
|
39
|
-
end
|
40
|
-
|
41
|
-
it "must show an error if line number is not specified" do
|
42
|
-
skip("No jumping for now")
|
43
|
-
enter 'jump'
|
44
|
-
debug_file('jump')
|
45
|
-
check_output_includes '"jump" must be followed by a line number',
|
46
|
-
interface.error_queue
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "when there is no active code in specified line" do
|
50
|
-
it "must not jump to there" do
|
51
|
-
skip("No jumping for now")
|
52
|
-
enter "jump 13 #{fullpath('jump')}"
|
53
|
-
debug_file('jump') { $state.line.must_equal 3 }
|
54
|
-
end
|
55
|
-
|
56
|
-
it "must show an error" do
|
57
|
-
skip("No jumping for now")
|
58
|
-
enter "jump 13 #{fullpath('jump')}"
|
59
|
-
debug_file('jump')
|
60
|
-
check_output_includes \
|
61
|
-
"Couldn't find active code at #{fullpath('jump')}:13",
|
62
|
-
interface.error_queue
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "Post Mortem" do
|
68
|
-
it "must work in post-mortem mode" do
|
69
|
-
skip 'No jumping for now plus this test fails with "Segmentation ' \
|
70
|
-
'fault". Probably need to fix it somehow or forbid this command ' \
|
71
|
-
'in post mortem mode. Seems like $state.context.frame_file and ' \
|
72
|
-
'$state.context.frame_line cause that.'
|
73
|
-
enter 'cont', 'jump 12'
|
74
|
-
debug_file 'post_mortem'
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
data/test/support/context.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module Byebug
|
2
|
-
|
3
|
-
class Context
|
4
|
-
|
5
|
-
def inspect
|
6
|
-
values = %w{
|
7
|
-
stop_reason tracing ignored? stack_size dead? frame_line frame_file frame_self
|
8
|
-
}.map do |field|
|
9
|
-
"#{field}: #{send(field)}"
|
10
|
-
end.join(", ")
|
11
|
-
"#<Byebug::Context #{values}>"
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
end
|