debugger 1.4.0 → 1.5.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.
- data/CHANGELOG.md +4 -0
- data/README.md +9 -3
- data/debugger.gemspec +1 -1
- data/ext/ruby_debug/192/ruby_debug.c +21 -9
- data/ext/ruby_debug/193/ruby_debug.c +15 -5
- data/lib/debugger/test.rb +6 -0
- data/{test/support → lib/debugger/test}/breakpoint.rb +0 -0
- data/{test/support → lib/debugger/test}/context.rb +0 -0
- data/{test/support → lib/debugger/test}/matchers.rb +0 -0
- data/{test/support → lib/debugger/test}/mocha_extensions.rb +1 -1
- data/lib/debugger/test/printer_helpers.rb +8 -0
- data/{test/support → lib/debugger/test}/processor.rb +0 -0
- data/{test/support → lib/debugger/test}/test_dsl.rb +22 -2
- data/{test/support → lib/debugger/test}/test_interface.rb +4 -0
- data/lib/debugger/version.rb +1 -1
- data/lib/ruby-debug.rb +4 -1
- data/lib/ruby-debug/command.rb +18 -6
- data/lib/ruby-debug/commands/breakpoints.rb +27 -29
- data/lib/ruby-debug/commands/condition.rb +7 -2
- data/lib/ruby-debug/commands/continue.rb +1 -2
- data/lib/ruby-debug/commands/control.rb +8 -9
- data/lib/ruby-debug/commands/display.rb +7 -15
- data/lib/ruby-debug/commands/edit.rb +6 -6
- data/lib/ruby-debug/commands/enable.rb +6 -7
- data/lib/ruby-debug/commands/eval.rb +1 -3
- data/lib/ruby-debug/commands/frame.rb +72 -101
- data/lib/ruby-debug/commands/info.rb +8 -14
- data/lib/ruby-debug/commands/irb.rb +1 -1
- data/lib/ruby-debug/commands/jump.rb +6 -6
- data/lib/ruby-debug/commands/kill.rb +0 -1
- data/lib/ruby-debug/commands/list.rb +4 -4
- data/lib/ruby-debug/commands/method.rb +8 -11
- data/lib/ruby-debug/commands/quit.rb +1 -1
- data/lib/ruby-debug/commands/reload.rb +1 -1
- data/lib/ruby-debug/commands/save.rb +1 -1
- data/lib/ruby-debug/commands/set.rb +10 -15
- data/lib/ruby-debug/commands/show.rb +28 -42
- data/lib/ruby-debug/commands/skip.rb +1 -1
- data/lib/ruby-debug/commands/source.rb +1 -1
- data/lib/ruby-debug/commands/start.rb +26 -0
- data/lib/ruby-debug/commands/threads.rb +29 -18
- data/lib/ruby-debug/commands/tmate.rb +1 -1
- data/lib/ruby-debug/commands/trace.rb +6 -7
- data/lib/ruby-debug/commands/variables.rb +36 -19
- data/lib/ruby-debug/helper.rb +5 -5
- data/lib/ruby-debug/interface.rb +15 -3
- data/lib/ruby-debug/printers/base.rb +58 -0
- data/lib/ruby-debug/printers/plain.rb +41 -0
- data/lib/ruby-debug/printers/texts/base.yml +146 -0
- data/lib/ruby-debug/printers/texts/plain.yml +60 -0
- data/lib/ruby-debug/processor.rb +56 -47
- data/test/breakpoints_test.rb +43 -54
- data/test/conditions_test.rb +18 -6
- data/test/continue_test.rb +1 -1
- data/test/display_test.rb +11 -11
- data/test/edit_test.rb +1 -2
- data/test/eval_test.rb +5 -6
- data/test/finish_test.rb +1 -1
- data/test/frame_test.rb +29 -27
- data/test/help_test.rb +0 -1
- data/test/info_test.rb +10 -14
- data/test/irb_test.rb +0 -1
- data/test/jump_test.rb +21 -2
- data/test/method_test.rb +3 -3
- data/test/new/printers/plain_test.rb +84 -0
- data/test/reload_test.rb +2 -2
- data/test/restart_test.rb +1 -2
- data/test/set_test.rb +8 -7
- data/test/show_test.rb +22 -22
- data/test/source_test.rb +1 -1
- data/test/test_helper.rb +2 -1
- data/test/thread_test.rb +11 -13
- data/test/trace_test.rb +7 -7
- data/test/variables_test.rb +33 -15
- metadata +20 -12
@@ -1,21 +1,34 @@
|
|
1
1
|
module Debugger
|
2
2
|
module ThreadFunctions # :nodoc:
|
3
|
-
def display_context(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
def display_context(context, should_show_top_frame = true)
|
4
|
+
print pr("thread.context", thread_arguments(context, should_show_top_frame))
|
5
|
+
end
|
6
|
+
|
7
|
+
def thread_arguments(context, should_show_top_frame = true)
|
8
|
+
is_current = context.thread == Thread.current
|
9
|
+
status_flag = if context.suspended?
|
10
|
+
"$"
|
11
|
+
else
|
12
|
+
is_current ? '+' : ' '
|
12
13
|
end
|
13
|
-
|
14
|
+
debug_flag = context.ignored? ? '!' : ' '
|
15
|
+
file_line = if context.stack_size > 0 && should_show_top_frame
|
16
|
+
"#{context.frame_file(0)}:#{context.frame_line(0)}"
|
17
|
+
end
|
18
|
+
{
|
19
|
+
status_flag: status_flag,
|
20
|
+
debug_flag: debug_flag,
|
21
|
+
id: context.thnum,
|
22
|
+
thread: context.thread.inspect,
|
23
|
+
file_line: file_line,
|
24
|
+
status: context.thread.status,
|
25
|
+
current: is_current ? "yes" : "no"
|
26
|
+
}
|
14
27
|
end
|
15
28
|
|
16
29
|
def parse_thread_num(subcmd, arg)
|
17
30
|
if '' == arg
|
18
|
-
errmsg "
|
31
|
+
errmsg pr("thread.errors.no_number", subcmd: subcmd)
|
19
32
|
nil
|
20
33
|
else
|
21
34
|
thread_num = get_int(arg, "thread #{subcmd}", 1)
|
@@ -29,11 +42,11 @@ module Debugger
|
|
29
42
|
return nil unless c
|
30
43
|
case
|
31
44
|
when nil == c
|
32
|
-
errmsg "
|
45
|
+
errmsg pr("thread.errors.no_thread")
|
33
46
|
when @state.context == c
|
34
|
-
errmsg "
|
47
|
+
errmsg pr("thread.errors.current_thread")
|
35
48
|
when c.ignored?
|
36
|
-
errmsg "
|
49
|
+
errmsg pr("thread.errors.wrong_action", subcmd: subcmd, arg: arg)
|
37
50
|
else # Everything is okay
|
38
51
|
return c
|
39
52
|
end
|
@@ -49,9 +62,7 @@ module Debugger
|
|
49
62
|
end
|
50
63
|
|
51
64
|
def execute
|
52
|
-
|
53
|
-
display_context(c)
|
54
|
-
end
|
65
|
+
print prc("thread.context", Debugger.contexts.sort_by(&:thnum)) { |context, _| thread_arguments(context) }
|
55
66
|
end
|
56
67
|
|
57
68
|
class << self
|
@@ -109,7 +120,7 @@ module Debugger
|
|
109
120
|
c = parse_thread_num_for_cmd("thread resume", @match[1])
|
110
121
|
return unless c
|
111
122
|
if !c.thread.stop?
|
112
|
-
|
123
|
+
errmsg pr("thread.errors.already_running")
|
113
124
|
return
|
114
125
|
end
|
115
126
|
c.resume
|
@@ -9,7 +9,7 @@ module Debugger
|
|
9
9
|
if @match[1]
|
10
10
|
frm_n = @match[1].to_i
|
11
11
|
if frm_n > @state.context.stack_size || frm_n == 0
|
12
|
-
print "
|
12
|
+
print pr("tmate.errors.wrong_frame")
|
13
13
|
return
|
14
14
|
end
|
15
15
|
file, line = @state.context.frame_file(frm_n-1), @state.context.frame_line(frm_n-1)
|
@@ -12,31 +12,30 @@ module Debugger
|
|
12
12
|
onoff = 'on' == @match[1]
|
13
13
|
if @match[2]
|
14
14
|
Debugger.tracing = onoff
|
15
|
-
print "
|
15
|
+
print pr("trace.messages.all_threads", status: onoff ? 'on' : 'off')
|
16
16
|
else
|
17
17
|
Debugger.current_context.tracing = onoff
|
18
|
-
print "
|
18
|
+
print pr("trace.messages.current_thread", status: onoff ? 'on' : 'off')
|
19
19
|
end
|
20
20
|
elsif @match[1] =~ /var(?:iable)?/
|
21
21
|
varname=@match[2]
|
22
22
|
if debug_eval("defined?(#{varname})")
|
23
23
|
if @match[3] && @match[3] !~ /(:?no)?stop/
|
24
|
-
errmsg("
|
24
|
+
errmsg pr("trace.errors.wrong_var_subcommand", subcmd: @match[3])
|
25
25
|
else
|
26
26
|
dbg_cmd = if @match[3] && (@match[3] !~ /nostop/)
|
27
27
|
'debugger' else '' end
|
28
28
|
end
|
29
29
|
eval("
|
30
30
|
trace_var(:#{varname}) do |val|
|
31
|
-
print
|
31
|
+
print pr('trace.trace', name: '#{varname}', value: val)
|
32
32
|
#{dbg_cmd}
|
33
33
|
end")
|
34
34
|
else
|
35
|
-
errmsg "
|
35
|
+
errmsg pr("trace.errors.var_is_not_global", name: varname)
|
36
36
|
end
|
37
37
|
else
|
38
|
-
errmsg("
|
39
|
-
@match[1])
|
38
|
+
errmsg pr("trace.errors.wrong_subcommand", subcmd: @match[1])
|
40
39
|
end
|
41
40
|
end
|
42
41
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
module Debugger
|
2
2
|
module VarFunctions # :nodoc:
|
3
3
|
def var_list(ary, b = get_binding)
|
4
|
-
ary.sort
|
5
|
-
for v in ary
|
4
|
+
vars = ary.sort.map do |v|
|
6
5
|
begin
|
7
6
|
s = debug_eval(v.to_s, b).inspect
|
8
7
|
rescue
|
@@ -15,13 +14,17 @@ module Debugger
|
|
15
14
|
if s.size > self.class.settings[:width]
|
16
15
|
s[self.class.settings[:width]-3 .. -1] = "..."
|
17
16
|
end
|
18
|
-
|
17
|
+
[v, s]
|
19
18
|
end
|
19
|
+
print prv(vars, 'instance')
|
20
20
|
end
|
21
21
|
def var_class_self
|
22
22
|
obj = debug_eval('self')
|
23
23
|
var_list(obj.class.class_variables, get_binding)
|
24
24
|
end
|
25
|
+
def var_global
|
26
|
+
var_list(global_variables.reject { |v| [:$=, :$KCODE, :$-K].include?(v) })
|
27
|
+
end
|
25
28
|
end
|
26
29
|
|
27
30
|
# Implements the debugger 'var class' command.
|
@@ -59,15 +62,13 @@ module Debugger
|
|
59
62
|
def execute
|
60
63
|
obj = debug_eval(@match.post_match)
|
61
64
|
if obj.kind_of? Module
|
62
|
-
constants = debug_eval("#{@match.post_match}.constants")
|
63
|
-
|
64
|
-
|
65
|
-
next if c =~ /SCRIPT/
|
66
|
-
value = obj.const_get(c) rescue "ERROR: #{$!}"
|
67
|
-
print " %s => %p\n", c, value
|
65
|
+
constants = debug_eval("#{@match.post_match}.constants").sort.reject { |c| c =~ /SCRIPT/ }.map do |constant|
|
66
|
+
value = obj.const_get(constant) rescue "ERROR: #{$!}"
|
67
|
+
[constant, value]
|
68
68
|
end
|
69
|
+
print prv(constants, "constant")
|
69
70
|
else
|
70
|
-
|
71
|
+
errmsg pr("variable.errors.not_class_module", object: @match.post_match)
|
71
72
|
end
|
72
73
|
end
|
73
74
|
|
@@ -90,7 +91,7 @@ module Debugger
|
|
90
91
|
end
|
91
92
|
|
92
93
|
def execute
|
93
|
-
|
94
|
+
var_global
|
94
95
|
end
|
95
96
|
|
96
97
|
class << self
|
@@ -108,11 +109,12 @@ module Debugger
|
|
108
109
|
|
109
110
|
class VarInstanceCommand < Command # :nodoc:
|
110
111
|
def regexp
|
111
|
-
|
112
|
+
# id will be read as first match, name as post match
|
113
|
+
/^\s*v(?:ar)?\s+ins(?:tance)?\s*((?:[\\+-]0x)[\dabcdef]+)?/
|
112
114
|
end
|
113
115
|
|
114
116
|
def execute
|
115
|
-
obj =
|
117
|
+
obj = get_obj(@match)
|
116
118
|
var_list(obj.instance_variables, obj.instance_eval{binding()})
|
117
119
|
end
|
118
120
|
|
@@ -123,10 +125,25 @@ module Debugger
|
|
123
125
|
|
124
126
|
def help(cmd)
|
125
127
|
%{
|
126
|
-
v[ar] i[nstance] <object>\tshow instance variables of object
|
128
|
+
v[ar] i[nstance] <object>\tshow instance variables of object. You may pass object id's hex as well.
|
127
129
|
}
|
128
130
|
end
|
129
131
|
end
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
def get_obj(match)
|
136
|
+
obj = if match[1]
|
137
|
+
begin
|
138
|
+
ObjectSpace._id2ref(match[1].hex)
|
139
|
+
rescue RangeError
|
140
|
+
errmsg "Unknown object id : %s" % match[1]
|
141
|
+
nil
|
142
|
+
end
|
143
|
+
else
|
144
|
+
debug_eval(match.post_match.empty? ? 'self' : match.post_match)
|
145
|
+
end
|
146
|
+
end
|
130
147
|
end
|
131
148
|
|
132
149
|
# Implements the debugger 'var local' command.
|
@@ -136,11 +153,11 @@ module Debugger
|
|
136
153
|
end
|
137
154
|
|
138
155
|
def execute
|
139
|
-
locals =
|
140
|
-
_self = @state.context.frame_self(@state.frame_pos)
|
141
|
-
locals.
|
142
|
-
|
143
|
-
|
156
|
+
locals = []
|
157
|
+
_self = @state.context.frame_self(@state.frame_pos)
|
158
|
+
locals << ['self', _self] unless _self.to_s == "main"
|
159
|
+
locals += @state.context.frame_locals(@state.frame_pos).sort.map { |key, value| [key, value] }
|
160
|
+
print prv(locals, 'instance')
|
144
161
|
end
|
145
162
|
|
146
163
|
class << self
|
data/lib/ruby-debug/helper.rb
CHANGED
@@ -11,15 +11,15 @@ module Debugger
|
|
11
11
|
begin
|
12
12
|
int = Integer(str)
|
13
13
|
if min and int < min
|
14
|
-
print "
|
14
|
+
print Debugger.printer.print("parse.errors.int.too_low", cmd: cmd, str: str, min: min)
|
15
15
|
return nil
|
16
16
|
elsif max and int > max
|
17
|
-
print "
|
17
|
+
print Debugger.printer.print("parse.errors.int.too_high", cmd: cmd, str: str, max: max)
|
18
18
|
return nil
|
19
19
|
end
|
20
20
|
return int
|
21
21
|
rescue
|
22
|
-
print "
|
22
|
+
print Debugger.printer.print("parse.errors.int.not_number", cmd: cmd, str: str)
|
23
23
|
return nil
|
24
24
|
end
|
25
25
|
end
|
@@ -30,7 +30,7 @@ module Debugger
|
|
30
30
|
if arg.nil? or arg == ''
|
31
31
|
if default.nil?
|
32
32
|
if print_error
|
33
|
-
print "
|
33
|
+
print Debugger.printer.print("parse.errors.onoff.syntax", arg: "nothing")
|
34
34
|
raise RuntimeError
|
35
35
|
end
|
36
36
|
return default
|
@@ -43,7 +43,7 @@ module Debugger
|
|
43
43
|
return false
|
44
44
|
else
|
45
45
|
if print_error
|
46
|
-
print "
|
46
|
+
print Debugger.printer.print("parse.errors.onoff.syntax", arg: arg)
|
47
47
|
raise RuntimeError
|
48
48
|
end
|
49
49
|
end
|
data/lib/ruby-debug/interface.rb
CHANGED
@@ -28,6 +28,18 @@ module Debugger
|
|
28
28
|
print afmt(msg)
|
29
29
|
end
|
30
30
|
|
31
|
+
def print_debug(msg)
|
32
|
+
print(msg)
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def escape_input(args)
|
38
|
+
new_args = args.dup
|
39
|
+
new_args.first.gsub!("%", "%%") if args.first.is_a?(String)
|
40
|
+
new_args
|
41
|
+
end
|
42
|
+
|
31
43
|
end
|
32
44
|
|
33
45
|
class LocalInterface < Interface # :nodoc:
|
@@ -67,7 +79,7 @@ module Debugger
|
|
67
79
|
end
|
68
80
|
|
69
81
|
def print(*args)
|
70
|
-
STDOUT.printf(*args)
|
82
|
+
STDOUT.printf(*escape_input(args))
|
71
83
|
end
|
72
84
|
|
73
85
|
def close
|
@@ -169,7 +181,7 @@ module Debugger
|
|
169
181
|
end
|
170
182
|
|
171
183
|
def print(*args)
|
172
|
-
@socket.printf(*args)
|
184
|
+
@socket.printf(*escape_input(args))
|
173
185
|
end
|
174
186
|
|
175
187
|
private
|
@@ -222,7 +234,7 @@ module Debugger
|
|
222
234
|
end
|
223
235
|
|
224
236
|
def print(*args)
|
225
|
-
@out.printf(*args)
|
237
|
+
@out.printf(*escape_input(args))
|
226
238
|
end
|
227
239
|
|
228
240
|
def close
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
module Printers
|
3
|
+
class Base
|
4
|
+
class MissedPath < StandardError; end
|
5
|
+
class MissedArgument < StandardError; end
|
6
|
+
|
7
|
+
SEPARATOR = "."
|
8
|
+
|
9
|
+
def type
|
10
|
+
self.class.name.split("::").last.downcase
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def locate(path)
|
16
|
+
result = nil
|
17
|
+
contents.each do |_, contents|
|
18
|
+
result = parts(path).inject(contents) do |r, part|
|
19
|
+
r && r.has_key?(part) ? r[part] : nil
|
20
|
+
end
|
21
|
+
break if result
|
22
|
+
end
|
23
|
+
raise MissedPath, "Can't find part path '#{path}'" unless result
|
24
|
+
result
|
25
|
+
end
|
26
|
+
|
27
|
+
def translate(string, args = {})
|
28
|
+
string.gsub(/\|\w+$/, '').gsub(/{([^}]*)}/) do
|
29
|
+
key = $1.to_s.to_sym
|
30
|
+
raise MissedArgument, "Missed argument #{$1} for '#{string}'" unless args.has_key?(key)
|
31
|
+
args[key]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def parts(path)
|
36
|
+
path.split(SEPARATOR)
|
37
|
+
end
|
38
|
+
|
39
|
+
def contents
|
40
|
+
@contents ||= contents_files.inject({}) do |hash, filename|
|
41
|
+
hash[filename] = YAML.load_file(filename) || {}
|
42
|
+
hash
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def array_of_args(collection, &block)
|
47
|
+
collection.each.with_index.inject([]) do |array, (item, index)|
|
48
|
+
args = block.call(item, index)
|
49
|
+
array << args if args
|
50
|
+
array
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def contents_files
|
55
|
+
[File.expand_path(File.join("..", "texts", "base.yml"), __FILE__)]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
module Printers
|
3
|
+
class Plain < Base
|
4
|
+
include Columnize
|
5
|
+
|
6
|
+
def print(path, args = {})
|
7
|
+
message = translate(locate(path), args)
|
8
|
+
message << " (y/n) " if parts(path).include?("confirmations")
|
9
|
+
message << "\n"
|
10
|
+
end
|
11
|
+
|
12
|
+
def print_collection(path, collection, &block)
|
13
|
+
modifier = get_modifier(path)
|
14
|
+
lines = array_of_args(collection, &block).map { |args| print(path, args) }
|
15
|
+
if modifier == 'c'
|
16
|
+
columnize(lines.map { |l| l.gsub(/\n$/, '') }, Debugger.settings[:width])
|
17
|
+
else
|
18
|
+
lines.join("")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def print_variables(variables, _kind)
|
23
|
+
print_collection("variable.variable", variables) do |(key, value), _|
|
24
|
+
{key: key, value: value.nil? ? "nil" : value.to_s}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def get_modifier(path)
|
31
|
+
modifier_regexp = /\|(\w+)$/
|
32
|
+
modifier_match = locate(path).match(modifier_regexp)
|
33
|
+
modifier_match && modifier_match[1]
|
34
|
+
end
|
35
|
+
|
36
|
+
def contents_files
|
37
|
+
[File.expand_path(File.join("..", "texts", "plain.yml"), __FILE__)] + super
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
base:
|
2
|
+
errors:
|
3
|
+
no_suspended_thread: "There is no thread suspended at the time and therefore no context to execute '{input}'"
|
4
|
+
command_unavailable: "Command is unavailable"
|
5
|
+
unknown_command: "Unknown command: {input}"
|
6
|
+
|
7
|
+
breakpoints:
|
8
|
+
errors:
|
9
|
+
if: "Expecting 'if' in breakpoint condition; got: {expr}"
|
10
|
+
location: "Invalid breakpoint location: {expr}"
|
11
|
+
state: "We are not in a state that has an associated file"
|
12
|
+
class: "Unknown class {file}"
|
13
|
+
far_line: "There are only {lines} lines in file '{file}'"
|
14
|
+
source: "No source file named {file}"
|
15
|
+
state_add: "We are not in a state we can add breakpoints"
|
16
|
+
state_delete: "We are not in a state we can delete breakpoints"
|
17
|
+
expression: "Expression '{expr}' syntactically incorrect; breakpoint disabled"
|
18
|
+
no_breakpoint: "No breakpoint number {id}"
|
19
|
+
confirmations:
|
20
|
+
set_breakpoint: "Set breakpoint anyway?"
|
21
|
+
delete_all: "Delete all breakpoints?"
|
22
|
+
|
23
|
+
condition:
|
24
|
+
errors:
|
25
|
+
syntax: "'condition' must be followed a breakpoint number and expression"
|
26
|
+
no_breakpoints: "No breakpoints have been set"
|
27
|
+
|
28
|
+
continue:
|
29
|
+
errors:
|
30
|
+
unstopped_line: "Line {line} is not a stopping point in file '{file}'"
|
31
|
+
|
32
|
+
display:
|
33
|
+
confirmations:
|
34
|
+
clear_all: "Clear all expressions?"
|
35
|
+
errors:
|
36
|
+
undefined: "Display expression {expr} is not defined"
|
37
|
+
|
38
|
+
edit:
|
39
|
+
errors:
|
40
|
+
state: "We are not in a state that has an associated file"
|
41
|
+
file_line: "Invalid file/line number specification: {file_line}"
|
42
|
+
not_readable: "File '{file}' is not readable"
|
43
|
+
|
44
|
+
frame:
|
45
|
+
errors:
|
46
|
+
too_low: "Adjusting would put us beyond the oldest (initial) frame"
|
47
|
+
too_high: "Adjusting would put us beyond the newest (innermost) frame"
|
48
|
+
|
49
|
+
jump:
|
50
|
+
errors:
|
51
|
+
no_line_number: "'jump' must be followed by a line number"
|
52
|
+
bad_line_number: "Bad line number: {line}"
|
53
|
+
not_possible: "Not possible to jump from here"
|
54
|
+
no_frame: "Couldn't find debugged frame"
|
55
|
+
no_active_code: "Couldn't find active code at {file}:{line}"
|
56
|
+
|
57
|
+
quit:
|
58
|
+
confirmations:
|
59
|
+
really: "Really quit?"
|
60
|
+
|
61
|
+
reload:
|
62
|
+
messages:
|
63
|
+
done: "Source code is reloaded. Automatic reloading is {source_reloading}"
|
64
|
+
|
65
|
+
restart:
|
66
|
+
errors:
|
67
|
+
undefined: "Don't know name of debugged program"
|
68
|
+
not_exist: "Ruby program {prog} doesn't exist"
|
69
|
+
no_args: "Arguments have not been set. Use 'set args' to set them"
|
70
|
+
not_available: "Restart command is not available at this time"
|
71
|
+
debug:
|
72
|
+
outset: "Debugger was not called from the outset..."
|
73
|
+
change_initial_dir: "Failed to change initial directory {dir}"
|
74
|
+
not_executable: "Ruby program {prog} doesn't seem to be executable...\nWe'll add a call to Ruby"
|
75
|
+
|
76
|
+
save:
|
77
|
+
messages:
|
78
|
+
done: "Saved to '{path}'"
|
79
|
+
|
80
|
+
set:
|
81
|
+
errors:
|
82
|
+
invalid_call_style: "Invalid call style {style}. Should be one of: 'short' or 'last'"
|
83
|
+
wrong_history_arg: "Invalid history parameter {arg}. Should be 'filename', 'save' or 'size'"
|
84
|
+
wrong_history_args_number: "Need two parameters for 'set history'; got {size}"
|
85
|
+
unknown_setting: "Unknown setting {setting}"
|
86
|
+
unknown_subcommand: "Unknown set command {subcmd}"
|
87
|
+
|
88
|
+
show:
|
89
|
+
messages:
|
90
|
+
annotation: "Annotation level is {level}"
|
91
|
+
args: "Argument list to give program being debugged when it is started is '{args}'"
|
92
|
+
general: "{setting} is {status}"
|
93
|
+
call_style: "Frame call-display style is {style}"
|
94
|
+
debuggertesting: "Currently testing the debugger is {status}"
|
95
|
+
fullpath: "Displaying frame's full file names is {status}"
|
96
|
+
history:
|
97
|
+
filename: "{prefix}The filename in which to record the command history is '{filename}'"
|
98
|
+
save: "{prefix}Saving of history save is {status}"
|
99
|
+
size: "{prefix}Debugger history size is {size}"
|
100
|
+
tracing_plus:
|
101
|
+
'on': "line tracing style is different consecutive lines"
|
102
|
+
'off': "line tracing style is every line"
|
103
|
+
listsize: "Number of source lines to list by default is {size}"
|
104
|
+
port: "server port is {port}"
|
105
|
+
version: "ruby-debug {version}"
|
106
|
+
errors:
|
107
|
+
no_readline: "No readline support"
|
108
|
+
unknown_subcommand: "Unknown show subcommand {name}"
|
109
|
+
unknown: "Unknown show command {name}"
|
110
|
+
|
111
|
+
skip:
|
112
|
+
messages:
|
113
|
+
ok: "ok"
|
114
|
+
|
115
|
+
source:
|
116
|
+
errors:
|
117
|
+
not_found: "Command file '{file}' is not found"
|
118
|
+
|
119
|
+
thread:
|
120
|
+
errors:
|
121
|
+
no_number: "'{subcmd}' needs a thread number"
|
122
|
+
no_thread: "No such thread"
|
123
|
+
current_thread: "It's the current thread"
|
124
|
+
wrong_action: "Can't {subcmd} to the debugger thread {arg}"
|
125
|
+
already_running: "Already running"
|
126
|
+
debug_trace: "DebuggerThread are not supposed to be traced ({thread})"
|
127
|
+
|
128
|
+
toggle:
|
129
|
+
errors:
|
130
|
+
no_breakpoints: "No breakpoints have been set"
|
131
|
+
no_display: "No display expressions have been set"
|
132
|
+
syntax: "'{toggle}' must be followed 'display', 'breakpoints' or breakpoint numbers"
|
133
|
+
expression: "Expression '{expr}' syntactically incorrect; breakpoint remains disabled"
|
134
|
+
|
135
|
+
parse:
|
136
|
+
errors:
|
137
|
+
int:
|
138
|
+
too_low: "{cmd} argument '{str}' needs to at least {min}"
|
139
|
+
too_high: "{cmd} argument '{str}' needs to at most {max}"
|
140
|
+
not_number: "{cmd} argument '{str}' needs to be a number"
|
141
|
+
onoff:
|
142
|
+
syntax: "Expecting 'on', 1, 'off', or 0. Got {arg}"
|
143
|
+
|
144
|
+
variable:
|
145
|
+
errors:
|
146
|
+
not_class_module: "Should be Class/Module: {object}"
|