byebug 1.4.1 → 1.4.2
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/.travis.yml +5 -0
- data/CHANGELOG.md +10 -0
- data/GUIDE.md +235 -9
- data/bin/byebug +12 -16
- data/byebug.gemspec +0 -1
- data/ext/byebug/byebug.c +5 -6
- data/lib/byebug.rb +17 -8
- data/lib/byebug/command.rb +12 -21
- data/lib/byebug/commands/breakpoints.rb +5 -9
- data/lib/byebug/commands/catchpoint.rb +2 -4
- data/lib/byebug/commands/condition.rb +4 -6
- data/lib/byebug/commands/continue.rb +2 -4
- data/lib/byebug/commands/control.rb +2 -4
- data/lib/byebug/commands/display.rb +4 -10
- data/lib/byebug/commands/edit.rb +2 -4
- data/lib/byebug/commands/enable.rb +6 -10
- data/lib/byebug/commands/eval.rb +12 -13
- data/lib/byebug/commands/finish.rb +2 -4
- data/lib/byebug/commands/frame.rb +6 -15
- data/lib/byebug/commands/help.rb +2 -3
- data/lib/byebug/commands/info.rb +5 -7
- data/lib/byebug/commands/jump.rb +2 -4
- data/lib/byebug/commands/kill.rb +2 -4
- data/lib/byebug/commands/list.rb +2 -4
- data/lib/byebug/commands/method.rb +4 -10
- data/lib/byebug/commands/quit.rb +2 -4
- data/lib/byebug/commands/reload.rb +1 -3
- data/lib/byebug/commands/repl.rb +3 -7
- data/lib/byebug/commands/save.rb +2 -4
- data/lib/byebug/commands/set.rb +4 -8
- data/lib/byebug/commands/show.rb +2 -4
- data/lib/byebug/commands/skip.rb +2 -4
- data/lib/byebug/commands/source.rb +1 -3
- data/lib/byebug/commands/stepping.rb +2 -4
- data/lib/byebug/commands/trace.rb +2 -4
- data/lib/byebug/commands/variables.rb +6 -18
- data/lib/byebug/version.rb +1 -1
- data/old_doc/byebug.texi +1 -9
- data/test/breakpoints_test.rb +1 -2
- data/test/examples/info.rb +5 -5
- data/test/examples/list.rb +21 -21
- data/test/examples/reload.rb +5 -5
- data/test/examples/repl.rb +6 -0
- data/test/examples/save.rb +2 -2
- data/test/examples/set.rb +2 -2
- data/test/examples/source.rb +2 -2
- data/test/finish_test.rb +1 -1
- data/test/help_test.rb +31 -15
- data/test/list_test.rb +27 -25
- data/test/reload_test.rb +3 -3
- data/test/repl_test.rb +8 -8
- data/test/set_test.rb +2 -12
- data/test/support/test_dsl.rb +25 -39
- data/test/variables_test.rb +0 -2
- metadata +4 -18
- data/test/examples/irb.rb +0 -6
data/lib/byebug/command.rb
CHANGED
@@ -13,23 +13,6 @@ module Byebug
|
|
13
13
|
string[Command.settings[:width]-3 .. -1] = "..."
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
17
|
-
##
|
18
|
-
# Find param in subcmds.
|
19
|
-
#
|
20
|
-
# @param is downcased and can be abbreviated to the minimum length listed in
|
21
|
-
# the subcommands.
|
22
|
-
#
|
23
|
-
def find(subcmds, param)
|
24
|
-
param.downcase!
|
25
|
-
for try_subcmd in subcmds do
|
26
|
-
if (param.size >= try_subcmd.min) and
|
27
|
-
(try_subcmd.name[0..param.size-1] == param)
|
28
|
-
return try_subcmd
|
29
|
-
end
|
30
|
-
end
|
31
|
-
return nil
|
32
|
-
end
|
33
16
|
end
|
34
17
|
|
35
18
|
# Root dir for byebug
|
@@ -53,10 +36,7 @@ module Byebug
|
|
53
36
|
need_context: false } unless defined?(DEF_OPTIONS)
|
54
37
|
|
55
38
|
def help(args)
|
56
|
-
output = description.
|
57
|
-
output.shift if output.first && output.first.empty?
|
58
|
-
output.pop if output.last && output.last.empty?
|
59
|
-
output = output.join("\n") + "\n"
|
39
|
+
output = description.gsub(/^ +/, '')
|
60
40
|
|
61
41
|
if defined? self::Subcommands
|
62
42
|
return output += format_subcmds unless args and args[1]
|
@@ -66,6 +46,17 @@ module Byebug
|
|
66
46
|
return output
|
67
47
|
end
|
68
48
|
|
49
|
+
def find(subcmds, param)
|
50
|
+
param.downcase!
|
51
|
+
for try_subcmd in subcmds do
|
52
|
+
if (param.size >= try_subcmd.min) and
|
53
|
+
(try_subcmd.name[0..param.size-1] == param)
|
54
|
+
return try_subcmd
|
55
|
+
end
|
56
|
+
end
|
57
|
+
return nil
|
58
|
+
end
|
59
|
+
|
69
60
|
def format_subcmd(subcmd_name)
|
70
61
|
subcmd = find(self::Subcommands, subcmd_name)
|
71
62
|
return "Invalid \"#{names.join("|")}\" " \
|
@@ -14,7 +14,7 @@ module Byebug
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def execute
|
17
|
-
return print
|
17
|
+
return print BreakCommand.help(nil) if BreakCommand.names.include?(@match[0])
|
18
18
|
|
19
19
|
if @match[1]
|
20
20
|
line, _, _, expr = @match.captures
|
@@ -95,12 +95,10 @@ module Byebug
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def description
|
98
|
-
%{
|
99
|
-
b[reak] file:line [if expr]
|
98
|
+
%{b[reak] file:line [if expr]
|
100
99
|
b[reak] class(.|#)method [if expr]
|
101
100
|
|
102
|
-
Set breakpoint to some position, (optionally) if expr == true
|
103
|
-
}
|
101
|
+
Set breakpoint to some position, (optionally) if expr == true}
|
104
102
|
end
|
105
103
|
end
|
106
104
|
end
|
@@ -134,12 +132,10 @@ module Byebug
|
|
134
132
|
end
|
135
133
|
|
136
134
|
def description
|
137
|
-
%{
|
138
|
-
del[ete][ nnn...]
|
135
|
+
%{del[ete][ nnn...]
|
139
136
|
|
140
137
|
Without and argument, deletes all breakpoints. With integer arguments,
|
141
|
-
it deletes specific breakpoints.
|
142
|
-
}
|
138
|
+
it deletes specific breakpoints.}
|
143
139
|
end
|
144
140
|
end
|
145
141
|
end
|
@@ -39,13 +39,11 @@ module Byebug
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def description
|
42
|
-
%{
|
43
|
-
cat[ch]\t\tsame as "info catch"
|
42
|
+
%{cat[ch]\t\tsame as "info catch"
|
44
43
|
cat[ch] <exception-name> [on|off]
|
45
44
|
\tIntercept <exception-name> when there would otherwise be no handler.
|
46
45
|
\tWith an "on" or "off", turn handling the exception on or off.
|
47
|
-
cat[ch] off\tdelete all catchpoints
|
48
|
-
}
|
46
|
+
cat[ch] off\tdelete all catchpoints}
|
49
47
|
end
|
50
48
|
end
|
51
49
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Byebug
|
2
2
|
|
3
|
-
class ConditionCommand < Command
|
3
|
+
class ConditionCommand < Command
|
4
4
|
|
5
5
|
def regexp
|
6
6
|
/^\s* cond(?:ition)? (?:\s+(\d+)\s*(.*))?$/ix
|
@@ -31,16 +31,14 @@ module Byebug
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def description
|
34
|
-
%{
|
35
|
-
cond[ition] nnn[ expr]
|
34
|
+
%{cond[ition] nnn[ expr]
|
36
35
|
|
37
36
|
Specify breakpoint number nnn to break only if expr is true. nnn is an
|
38
37
|
integer and expr is an expression to be evaluated whenever breakpoint
|
39
38
|
nnn is reached. If no expression is specified, the condition is
|
40
|
-
removed.
|
41
|
-
}
|
39
|
+
removed.}
|
42
40
|
end
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
46
|
-
end
|
44
|
+
end
|
@@ -28,11 +28,9 @@ module Byebug
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def description
|
31
|
-
%{
|
32
|
-
c[ont[inue]][ nnn]
|
31
|
+
%{c[ont[inue]][ nnn]
|
33
32
|
|
34
|
-
Run until program ends, hits a breakpoint or reaches line nnn
|
35
|
-
}
|
33
|
+
Run until program ends, hits a breakpoint or reaches line nnn}
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
@@ -60,12 +60,10 @@ module Byebug
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def description
|
63
|
-
%{
|
64
|
-
restart|R [args]
|
63
|
+
%{restart|R [args]
|
65
64
|
|
66
65
|
Restart the program. This is a re-exec - all byebug state
|
67
|
-
is lost. If command arguments are passed those are used.
|
68
|
-
}
|
66
|
+
is lost. If command arguments are passed those are used.}
|
69
67
|
end
|
70
68
|
end
|
71
69
|
end
|
@@ -39,9 +39,7 @@ module Byebug
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def description
|
42
|
-
%{
|
43
|
-
disp[lay] <expression>\tadd expression into display expression list
|
44
|
-
}
|
42
|
+
%{disp[lay] <expression>\tadd expression into display expression list}
|
45
43
|
end
|
46
44
|
end
|
47
45
|
end
|
@@ -70,9 +68,7 @@ module Byebug
|
|
70
68
|
end
|
71
69
|
|
72
70
|
def description
|
73
|
-
%{
|
74
|
-
disp[lay]\t\tdisplay expression list
|
75
|
-
}
|
71
|
+
%{disp[lay]\t\tdisplay expression list}
|
76
72
|
end
|
77
73
|
end
|
78
74
|
end
|
@@ -106,15 +102,13 @@ module Byebug
|
|
106
102
|
end
|
107
103
|
|
108
104
|
def description
|
109
|
-
%{
|
110
|
-
undisp[lay][ nnn]
|
105
|
+
%{undisp[lay][ nnn]
|
111
106
|
|
112
107
|
Cancel some expressions to be displayed when program stops. Arguments
|
113
108
|
are the code numbers of the expressions to stop displaying. No
|
114
109
|
argument means cancel all automatic-display expressions. "delete
|
115
110
|
display" has the same effect as this command. Do "info display" to see
|
116
|
-
the current list of code numbers.
|
117
|
-
}
|
111
|
+
the current list of code numbers.}
|
118
112
|
end
|
119
113
|
end
|
120
114
|
end
|
data/lib/byebug/commands/edit.rb
CHANGED
@@ -35,13 +35,11 @@ module Byebug
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def description
|
38
|
-
%{
|
39
|
-
edit[ file:lineno]\tEdit specified file.
|
38
|
+
%{edit[ file:lineno]\tEdit specified file.
|
40
39
|
|
41
40
|
With no argument, edits file containing most recent line listed.
|
42
41
|
Editing targets can also be specified to start editing at a specific
|
43
|
-
line in a specific file.
|
44
|
-
}
|
42
|
+
line in a specific file.}
|
45
43
|
end
|
46
44
|
end
|
47
45
|
end
|
@@ -69,7 +69,7 @@ module Byebug
|
|
69
69
|
|
70
70
|
args = @match[1].split(/[ \t]+/)
|
71
71
|
param = args.shift
|
72
|
-
subcmd = find(Subcommands, param)
|
72
|
+
subcmd = Command.find(Subcommands, param)
|
73
73
|
if subcmd
|
74
74
|
send("enable_#{subcmd.name}", args)
|
75
75
|
else
|
@@ -91,10 +91,8 @@ module Byebug
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def description
|
94
|
-
%{
|
95
|
-
|
96
|
-
This is used to cancel the effect of the "disable" command.
|
97
|
-
}
|
94
|
+
%{Enable some things.
|
95
|
+
This is used to cancel the effect of the "disable" command.}
|
98
96
|
end
|
99
97
|
end
|
100
98
|
end
|
@@ -123,7 +121,7 @@ module Byebug
|
|
123
121
|
|
124
122
|
args = @match[1].split(/[ \t]+/)
|
125
123
|
param = args.shift
|
126
|
-
subcmd = find(Subcommands, param)
|
124
|
+
subcmd = Command.find(Subcommands, param)
|
127
125
|
if subcmd
|
128
126
|
send("disable_#{subcmd.name}", args)
|
129
127
|
else
|
@@ -145,12 +143,10 @@ module Byebug
|
|
145
143
|
end
|
146
144
|
|
147
145
|
def description
|
148
|
-
%{
|
149
|
-
Disable some things.
|
146
|
+
%{Disable some things.
|
150
147
|
|
151
148
|
A disabled item is not forgotten, but has no effect until reenabled.
|
152
|
-
Use the "enable" command to have it take effect again.
|
153
|
-
}
|
149
|
+
Use the "enable" command to have it take effect again.}
|
154
150
|
end
|
155
151
|
end
|
156
152
|
end
|
data/lib/byebug/commands/eval.rb
CHANGED
@@ -58,10 +58,11 @@ module Byebug
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def description
|
61
|
-
%{
|
62
|
-
|
63
|
-
|
64
|
-
|
61
|
+
%{(p|e[val]) expression
|
62
|
+
|
63
|
+
Evaluate expression and print its value
|
64
|
+
* NOTE - unknown input is automatically evaluated, to turn this off
|
65
|
+
use 'set noautoeval'}
|
65
66
|
end
|
66
67
|
end
|
67
68
|
end
|
@@ -89,9 +90,7 @@ module Byebug
|
|
89
90
|
end
|
90
91
|
|
91
92
|
def description
|
92
|
-
%{
|
93
|
-
pp expression\tevaluate expression and pretty-print its value
|
94
|
-
}
|
93
|
+
%{pp expression\tevaluate expression and pretty-print its value}
|
95
94
|
end
|
96
95
|
end
|
97
96
|
end
|
@@ -126,9 +125,9 @@ module Byebug
|
|
126
125
|
end
|
127
126
|
|
128
127
|
def description
|
129
|
-
%{
|
130
|
-
|
131
|
-
|
128
|
+
%{putl expression
|
129
|
+
|
130
|
+
Evaluate expression, an array, and columnize its value}
|
132
131
|
end
|
133
132
|
end
|
134
133
|
end
|
@@ -165,9 +164,9 @@ module Byebug
|
|
165
164
|
end
|
166
165
|
|
167
166
|
def description
|
168
|
-
%{
|
169
|
-
|
170
|
-
|
167
|
+
%{ps expression
|
168
|
+
|
169
|
+
Evaluate expression, an array, sort and columnize its value}
|
171
170
|
end
|
172
171
|
end
|
173
172
|
end
|
@@ -28,16 +28,14 @@ module Byebug
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def description
|
31
|
-
%{
|
32
|
-
fin[ish][ frame-number]\tExecute until selected stack frame returns.
|
31
|
+
%{fin[ish][ frame-number]\tExecute until selected stack frame returns.
|
33
32
|
|
34
33
|
If no frame number is given, we run until the currently selected frame
|
35
34
|
returns. The currently selected frame starts out the most-recent frame
|
36
35
|
or 0 if no frame positioning (e.g "up", "down" or "frame") has been
|
37
36
|
performed.
|
38
37
|
|
39
|
-
If a frame number is given we run until that frame returns.
|
40
|
-
}
|
38
|
+
If a frame number is given we run until that frame returns.}
|
41
39
|
end
|
42
40
|
end
|
43
41
|
end
|
@@ -157,7 +157,6 @@ module Byebug
|
|
157
157
|
end
|
158
158
|
return nil
|
159
159
|
end
|
160
|
-
|
161
160
|
end
|
162
161
|
|
163
162
|
# Implements byebug "where" or "backtrace" command.
|
@@ -180,14 +179,12 @@ module Byebug
|
|
180
179
|
end
|
181
180
|
|
182
181
|
def description
|
183
|
-
%{
|
184
|
-
w[here]|bt|backtrace\tdisplay stack frames
|
182
|
+
%{w[here]|bt|backtrace\tdisplay stack frames
|
185
183
|
|
186
184
|
Print the entire stack frame. Each frame is numbered, the most recent
|
187
185
|
frame is 0. frame number can be referred to in the "frame" command;
|
188
186
|
"up" and "down" add or subtract respectively to frame numbers shown.
|
189
|
-
The position of the current frame is marked with -->.
|
190
|
-
}
|
187
|
+
The position of the current frame is marked with -->.}
|
191
188
|
end
|
192
189
|
end
|
193
190
|
end
|
@@ -209,9 +206,7 @@ module Byebug
|
|
209
206
|
end
|
210
207
|
|
211
208
|
def description
|
212
|
-
%{
|
213
|
-
up[ count]\tmove to higher frame
|
214
|
-
}
|
209
|
+
%{up[ count]\tmove to higher frame}
|
215
210
|
end
|
216
211
|
end
|
217
212
|
end
|
@@ -233,9 +228,7 @@ module Byebug
|
|
233
228
|
end
|
234
229
|
|
235
230
|
def description
|
236
|
-
%{
|
237
|
-
down[ count]\tmove to lower frame
|
238
|
-
}
|
231
|
+
%{down[ count]\tmove to lower frame}
|
239
232
|
end
|
240
233
|
end
|
241
234
|
end
|
@@ -264,8 +257,7 @@ module Byebug
|
|
264
257
|
end
|
265
258
|
|
266
259
|
def description
|
267
|
-
%{
|
268
|
-
f[rame][ frame-number]
|
260
|
+
%{f[rame][ frame-number]
|
269
261
|
|
270
262
|
Move the current frame to the specified frame number, or the 0 if no
|
271
263
|
frame-number has been given.
|
@@ -275,8 +267,7 @@ module Byebug
|
|
275
267
|
|
276
268
|
Without an argument, the command prints the current stack frame. Since
|
277
269
|
the current position is redisplayed, it may trigger a resyncronization
|
278
|
-
if there is a front end also watching over things.
|
279
|
-
}
|
270
|
+
if there is a front end also watching over things.}
|
280
271
|
end
|
281
272
|
end
|
282
273
|
end
|
data/lib/byebug/commands/help.rb
CHANGED
data/lib/byebug/commands/info.rb
CHANGED
@@ -71,7 +71,7 @@ module Byebug
|
|
71
71
|
|
72
72
|
args = @match[1].split(/[ \t]+/)
|
73
73
|
param = args.shift
|
74
|
-
subcmd = find(Subcommands, param)
|
74
|
+
subcmd = Command.find(Subcommands, param)
|
75
75
|
if subcmd
|
76
76
|
send("info_#{subcmd.name}", *args)
|
77
77
|
else
|
@@ -174,7 +174,7 @@ module Byebug
|
|
174
174
|
|
175
175
|
param = args[1] || 'basic'
|
176
176
|
|
177
|
-
subcmd = find(InfoFileSubcommands, param)
|
177
|
+
subcmd = Command.find(InfoFileSubcommands, param)
|
178
178
|
return errmsg "Invalid parameter #{param}\n" unless subcmd
|
179
179
|
|
180
180
|
unless LineCache::cached?(args[0])
|
@@ -309,11 +309,9 @@ module Byebug
|
|
309
309
|
end
|
310
310
|
|
311
311
|
def description
|
312
|
-
%{
|
313
|
-
info[ subcommand]
|
312
|
+
%{info[ subcommand]
|
314
313
|
|
315
|
-
Generic command for showing things about the program being debugged.
|
316
|
-
}
|
314
|
+
Generic command for showing things about the program being debugged.}
|
317
315
|
end
|
318
316
|
|
319
317
|
def help(args)
|
@@ -322,7 +320,7 @@ module Byebug
|
|
322
320
|
return format_subcmd(args[1]) unless 'file' == args[1] and args[2]
|
323
321
|
|
324
322
|
str = subcmd.short_help + '.'
|
325
|
-
subsubcmd = find(InfoFileSubcommands, args[2])
|
323
|
+
subsubcmd = Command.find(InfoFileSubcommands, args[2])
|
326
324
|
if subsubcmd
|
327
325
|
str += "\nInvalid \"file\" attribute \"#{args[2]}\"."
|
328
326
|
else
|