byebug 1.3.1 → 1.4.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 +6 -0
- data/README.md +3 -2
- data/bin/byebug +1 -0
- data/byebug.gemspec +6 -5
- data/ext/byebug/breakpoint.c +29 -28
- data/ext/byebug/byebug.c +217 -184
- data/ext/byebug/byebug.h +30 -29
- data/ext/byebug/context.c +152 -154
- data/lib/byebug.rb +4 -0
- data/lib/byebug/command.rb +5 -7
- data/lib/byebug/commands/set.rb +1 -1
- data/lib/byebug/commands/show.rb +1 -1
- data/lib/byebug/context.rb +4 -9
- data/lib/byebug/processor.rb +2 -4
- data/lib/byebug/version.rb +1 -1
- data/test/display_test.rb +0 -2
- data/test/examples/list.rb +1 -1
- data/test/frame_test.rb +14 -18
- data/test/info_test.rb +3 -7
- metadata +9 -8
data/lib/byebug.rb
CHANGED
@@ -11,6 +11,10 @@ module Byebug
|
|
11
11
|
|
12
12
|
self.handler = CommandProcessor.new
|
13
13
|
|
14
|
+
# List of files byebug will ignore while debugging
|
15
|
+
IGNORED_FILES = Dir[Pathname.new(__FILE__) + "../**/*.rb"].map {
|
16
|
+
|f| File.expand_path(f) }
|
17
|
+
|
14
18
|
# Default options to Byebug.start
|
15
19
|
DEFAULT_START_SETTINGS = {
|
16
20
|
init: true, # Set $0 and save ARGV?
|
data/lib/byebug/command.rb
CHANGED
@@ -133,7 +133,6 @@ module Byebug
|
|
133
133
|
raise "No such setting #{name}" unless map.has_key?(name)
|
134
134
|
map[name][:getter].call
|
135
135
|
end
|
136
|
-
c = class << @settings; self end
|
137
136
|
c.send(:define_method, :[]=) do |name, value|
|
138
137
|
raise "No such setting #{name}" unless map.has_key?(name)
|
139
138
|
map[name][:setter].call(value)
|
@@ -193,7 +192,7 @@ module Byebug
|
|
193
192
|
|
194
193
|
def debug_eval(str, b = get_binding)
|
195
194
|
begin
|
196
|
-
|
195
|
+
eval(str, b)
|
197
196
|
rescue StandardError, ScriptError => e
|
198
197
|
if Command.settings[:stack_trace_on_error]
|
199
198
|
at = eval("caller(1)", b)
|
@@ -204,13 +203,12 @@ module Byebug
|
|
204
203
|
else
|
205
204
|
print "#{e.class} Exception: #{e.message}\n"
|
206
205
|
end
|
207
|
-
throw :debug_error
|
208
206
|
end
|
209
207
|
end
|
210
208
|
|
211
|
-
def debug_silent_eval(str)
|
209
|
+
def debug_silent_eval(str, b = get_binding)
|
212
210
|
begin
|
213
|
-
eval(str,
|
211
|
+
eval(str, b)
|
214
212
|
rescue StandardError, ScriptError
|
215
213
|
nil
|
216
214
|
end
|
@@ -218,8 +216,8 @@ module Byebug
|
|
218
216
|
|
219
217
|
def debug_warning_eval(str, b = get_binding)
|
220
218
|
begin
|
221
|
-
|
222
|
-
rescue
|
219
|
+
eval(str, b)
|
220
|
+
rescue StandardError, ScriptError => e
|
223
221
|
print "#{e.class} Exception: #{e.message}\n"
|
224
222
|
end
|
225
223
|
end
|
data/lib/byebug/commands/set.rb
CHANGED
@@ -116,7 +116,7 @@ module Byebug
|
|
116
116
|
Command.settings[:testing] = set_on
|
117
117
|
Command.settings[:basename] = set_on
|
118
118
|
when /^forcestep$/
|
119
|
-
|
119
|
+
Command.settings[:force_stepping] = set_on
|
120
120
|
when /^history$/
|
121
121
|
if 2 == args.size
|
122
122
|
interface = @state.interface
|
data/lib/byebug/commands/show.rb
CHANGED
@@ -77,7 +77,7 @@ module Byebug
|
|
77
77
|
on_off = Command.settings[:testing]
|
78
78
|
return "Currently testing byebug is #{show_onoff(on_off)}."
|
79
79
|
when /^forcestep$/
|
80
|
-
on_off =
|
80
|
+
on_off = Command.settings[:force_stepping]
|
81
81
|
return "force-stepping is #{show_onoff(on_off)}."
|
82
82
|
when /^fullpath$/
|
83
83
|
on_off = Command.settings[:frame_fullpath]
|
data/lib/byebug/context.rb
CHANGED
@@ -36,7 +36,8 @@ module Byebug
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def at_breakpoint(breakpoint)
|
39
|
-
handler.at_breakpoint(self, breakpoint)
|
39
|
+
handler.at_breakpoint(self, breakpoint) unless
|
40
|
+
IGNORED_FILES.include?(breakpoint.source)
|
40
41
|
end
|
41
42
|
|
42
43
|
def at_catchpoint(excpt)
|
@@ -44,18 +45,12 @@ module Byebug
|
|
44
45
|
end
|
45
46
|
|
46
47
|
def at_tracing(file, line)
|
47
|
-
handler.at_tracing(self, file, line)
|
48
|
+
handler.at_tracing(self, file, line) unless IGNORED_FILES.include?(file)
|
48
49
|
end
|
49
50
|
|
50
51
|
def at_line(file, line)
|
51
|
-
handler.at_line(self, file, line) unless
|
52
|
-
defined?(Byebug::BYEBUG_SCRIPT) and
|
53
|
-
File.identical?(file, Byebug::BYEBUG_SCRIPT)
|
52
|
+
handler.at_line(self, file, line) unless IGNORED_FILES.include?(file)
|
54
53
|
end
|
55
54
|
|
56
|
-
#def at_return(file, line)
|
57
|
-
# handler.at_return(self, file, line)
|
58
|
-
#end
|
59
|
-
|
60
55
|
end
|
61
56
|
end
|
data/lib/byebug/processor.rb
CHANGED
@@ -141,11 +141,9 @@ module Byebug
|
|
141
141
|
protect :at_catchpoint
|
142
142
|
|
143
143
|
def at_tracing(context, file, line)
|
144
|
-
# Don't trace ourselves
|
145
|
-
return if defined?(Byebug::BYEBUG_SCRIPT) && Byebug::BYEBUG_SCRIPT == file
|
146
|
-
|
147
144
|
tracing_plus = Command.settings[:tracing_plus]
|
148
|
-
if file != @last_file || line != @last_line ||
|
145
|
+
if file != @last_file || line != @last_line ||
|
146
|
+
Command.settings[:tracing_plus] == false
|
149
147
|
@last_file = file
|
150
148
|
@last_line = line
|
151
149
|
print "Tracing: #{CommandProcessor.canonic_file(file)}:#{line} " \
|
data/lib/byebug/version.rb
CHANGED
data/test/display_test.rb
CHANGED
@@ -135,8 +135,6 @@ class TestDisplay < TestDsl::TestCase
|
|
135
135
|
end
|
136
136
|
|
137
137
|
describe 'Post Mortem' do
|
138
|
-
temporary_change_hash Byebug::Command.settings, :autoeval, false
|
139
|
-
|
140
138
|
it 'must be able to set display expressions in post-mortem mode' do
|
141
139
|
enter 'cont', 'display 2 + 2'
|
142
140
|
debug_file 'post_mortem'
|
data/test/examples/list.rb
CHANGED
data/test/frame_test.rb
CHANGED
@@ -2,10 +2,6 @@ require_relative 'test_helper'
|
|
2
2
|
|
3
3
|
class TestFrame < TestDsl::TestCase
|
4
4
|
|
5
|
-
# XXX: Calculate magic number dinamically, like
|
6
|
-
# "longest_string_in_test_output".size
|
7
|
-
temporary_change_hash Byebug::Command.settings, :width, 96
|
8
|
-
|
9
5
|
it 'must go up' do
|
10
6
|
enter 'break 16', 'cont', 'up'
|
11
7
|
debug_file('frame') { state.line.must_equal 12 }
|
@@ -38,8 +34,8 @@ class TestFrame < TestDsl::TestCase
|
|
38
34
|
|
39
35
|
it 'must print current stack frame when without arguments' do
|
40
36
|
enter 'break A.d', 'cont', 'up', 'frame'
|
41
|
-
debug_file('frame')
|
42
|
-
|
37
|
+
debug_file('frame')
|
38
|
+
check_output_includes /#0 A.d(e#String) at #{fullpath('frame')}:15/x
|
43
39
|
end
|
44
40
|
|
45
41
|
it 'must set frame to the first one' do
|
@@ -82,8 +78,8 @@ class TestFrame < TestDsl::TestCase
|
|
82
78
|
enter 'break 16', 'cont', 'where'
|
83
79
|
debug_file 'frame'
|
84
80
|
check_output_includes \
|
85
|
-
|
86
|
-
|
81
|
+
/--> #0 A.d(e#String) at #{fullpath('frame')}:16/x,
|
82
|
+
/#1 A.c at #{fullpath('frame')}:12/x
|
87
83
|
end
|
88
84
|
end
|
89
85
|
|
@@ -94,8 +90,8 @@ class TestFrame < TestDsl::TestCase
|
|
94
90
|
enter 'set nofullpath', 'break 16', 'cont', 'where'
|
95
91
|
debug_file 'frame'
|
96
92
|
check_output_includes \
|
97
|
-
|
98
|
-
|
93
|
+
/--> #0 A.d(e#String) at #{short_path(fullpath('frame'))}:16/x,
|
94
|
+
/#1 A.c at #{short_path(fullpath('frame'))}:12/x
|
99
95
|
end
|
100
96
|
end
|
101
97
|
end
|
@@ -108,10 +104,10 @@ class TestFrame < TestDsl::TestCase
|
|
108
104
|
enter 'break 16', 'cont', 'where'
|
109
105
|
debug_file 'frame'
|
110
106
|
check_output_includes \
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
107
|
+
/--> #0 A.d(e#String) at #{fullpath('frame')}:16/x,
|
108
|
+
/#1 A.c at #{fullpath('frame')}:12/x ,
|
109
|
+
/#2 A.b at #{fullpath('frame')}:8/x ,
|
110
|
+
/#3 A.a at #{fullpath('frame')}:5/x
|
115
111
|
end
|
116
112
|
end
|
117
113
|
|
@@ -121,10 +117,10 @@ class TestFrame < TestDsl::TestCase
|
|
121
117
|
it 'displays current backtrace with callstyle "short"' do
|
122
118
|
enter 'break 16', 'cont', 'where'
|
123
119
|
debug_file 'frame'
|
124
|
-
check_output_includes
|
125
|
-
|
126
|
-
|
127
|
-
|
120
|
+
check_output_includes /--> #0 d(e) at #{fullpath('frame')}:16/x,
|
121
|
+
/#1 c at #{fullpath('frame')}:12/x,
|
122
|
+
/#2 b at #{fullpath('frame')}:8/x,
|
123
|
+
/#3 a at #{fullpath('frame')}:5/x
|
128
124
|
end
|
129
125
|
end
|
130
126
|
|
data/test/info_test.rb
CHANGED
@@ -230,16 +230,12 @@ class TestInfo < TestDsl::TestCase
|
|
230
230
|
end
|
231
231
|
|
232
232
|
describe 'Stack info' do
|
233
|
-
# XXX: Calculate magic number dinamically, like
|
234
|
-
# "longest_string_in_test_output".size
|
235
|
-
temporary_change_hash Byebug::Command.settings, :width, 87
|
236
|
-
|
237
233
|
it 'must show stack info' do
|
238
234
|
enter 'set fullpath', 'break 20', 'cont', 'info stack'
|
239
235
|
debug_file 'info'
|
240
|
-
check_output_includes
|
241
|
-
|
242
|
-
|
236
|
+
check_output_includes /--> #0 A.a at #{fullpath('info')}:20/x,
|
237
|
+
/#1 A.b at #{fullpath('info')}:30/x,
|
238
|
+
/#2 <main> at #{fullpath('info')}:36/x
|
243
239
|
end
|
244
240
|
end
|
245
241
|
|
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: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Rodríguez
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-06-
|
13
|
+
date: 2013-06-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: columnize
|
@@ -88,20 +88,21 @@ dependencies:
|
|
88
88
|
requirements:
|
89
89
|
- - ~>
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 5.0.
|
91
|
+
version: 5.0.3
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 5.0.
|
98
|
+
version: 5.0.3
|
99
99
|
description: |-
|
100
100
|
Byebug is a Ruby 2.0 debugger. It's implemented using the
|
101
|
-
Ruby 2.0 TracePoint C API
|
102
|
-
|
103
|
-
|
104
|
-
|
101
|
+
Ruby 2.0 TracePoint C API for execution control and the Debug Inspector C
|
102
|
+
API for call stack navigation. The core component provides support that
|
103
|
+
front-ends can build on. It provides breakpoint handling and bindings for
|
104
|
+
stack frames among other things and it comes with an easy to use command
|
105
|
+
line interface.
|
105
106
|
email: deivid.rodriguez@mail.com
|
106
107
|
executables:
|
107
108
|
- byebug
|