ruby-debug-ide 0.4.17.beta14 → 0.4.17.beta16
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/bin/rdebug-ide +0 -9
- data/ext/mkrf_conf.rb +4 -2
- data/lib/ruby-debug-ide.rb +11 -67
- data/lib/ruby-debug-ide/commands/variables.rb +2 -0
- data/lib/ruby-debug-ide/ide_processor.rb +4 -4
- data/lib/ruby-debug-ide/version.rb +1 -1
- data/lib/ruby-debug-ide/xml_printer.rb +18 -4
- metadata +2 -2
data/Gemfile
CHANGED
data/bin/rdebug-ide
CHANGED
@@ -1,13 +1,4 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# start by patching require, so command-line debug won't get in the way
|
3
|
-
::Kernel.module_eval do
|
4
|
-
alias ide_debug_original_require require
|
5
|
-
def self.require(file)
|
6
|
-
ide_debug_original_require(file) if file !~ /ruby-debug(.rb)?$/
|
7
|
-
end
|
8
|
-
private :require
|
9
|
-
end
|
10
|
-
|
11
2
|
require 'rubygems'
|
12
3
|
require 'optparse'
|
13
4
|
require "ostruct"
|
data/ext/mkrf_conf.rb
CHANGED
@@ -18,8 +18,10 @@ unless jruby
|
|
18
18
|
|
19
19
|
if RUBY_VERSION < "1.9"
|
20
20
|
dep = Gem::Dependency.new("ruby-debug-base", '>=0.10.4')
|
21
|
-
|
21
|
+
elsif RUBY_VERSION < '2.0'
|
22
22
|
dep = Gem::Dependency.new("ruby-debug-base19x", '>=0.11.24')
|
23
|
+
else
|
24
|
+
# dep = Gem::Dependency.new("debase", '> 0')
|
23
25
|
end
|
24
26
|
|
25
27
|
begin
|
@@ -35,7 +37,7 @@ unless jruby
|
|
35
37
|
puts e.backtrace.join "\n "
|
36
38
|
exit(1)
|
37
39
|
end
|
38
|
-
end unless already_installed(dep)
|
40
|
+
end unless dep.nil? || already_installed(dep)
|
39
41
|
end
|
40
42
|
|
41
43
|
# create dummy rakefile to indicate success
|
data/lib/ruby-debug-ide.rb
CHANGED
@@ -2,7 +2,11 @@ require 'pp'
|
|
2
2
|
require 'stringio'
|
3
3
|
require "socket"
|
4
4
|
require 'thread'
|
5
|
-
|
5
|
+
if (RUBY_VERSION < '2.0')
|
6
|
+
require 'ruby-debug-base'
|
7
|
+
else
|
8
|
+
require 'debase'
|
9
|
+
end
|
6
10
|
|
7
11
|
require 'ruby-debug-ide/version'
|
8
12
|
require 'ruby-debug-ide/xml_printer'
|
@@ -36,56 +40,11 @@ module Debugger
|
|
36
40
|
end
|
37
41
|
cleared
|
38
42
|
end
|
39
|
-
end
|
40
|
-
|
41
|
-
class Context
|
42
|
-
def interrupt
|
43
|
-
self.stop_next = 1
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def event_processor
|
49
|
-
Debugger.event_processor
|
50
|
-
end
|
51
|
-
|
52
|
-
def at_breakpoint(breakpoint)
|
53
|
-
event_processor.at_breakpoint(self, breakpoint)
|
54
|
-
end
|
55
|
-
|
56
|
-
def at_catchpoint(excpt)
|
57
|
-
event_processor.at_catchpoint(self, excpt)
|
58
|
-
end
|
59
|
-
|
60
|
-
def at_tracing(file, line)
|
61
|
-
if event_processor
|
62
|
-
event_processor.at_tracing(self, file, line)
|
63
|
-
else
|
64
|
-
Debugger::print_debug "trace: location=\"%s:%s\", threadId=%d", file, line, self.thnum
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def at_line(file, line)
|
69
|
-
event_processor.at_line(self, file, line)
|
70
|
-
end
|
71
|
-
|
72
|
-
def at_return(file, line)
|
73
|
-
event_processor.at_return(self, file, line)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
class << self
|
78
43
|
|
79
|
-
attr_accessor :
|
44
|
+
attr_accessor :cli_debug, :xml_debug
|
80
45
|
attr_accessor :control_thread
|
81
46
|
attr_reader :interface
|
82
|
-
|
83
|
-
#
|
84
|
-
# Interrupts the current thread
|
85
|
-
#
|
86
|
-
def interrupt
|
87
|
-
current_context.interrupt
|
88
|
-
end
|
47
|
+
|
89
48
|
|
90
49
|
#
|
91
50
|
# Interrupts the last debugged thread
|
@@ -146,7 +105,9 @@ module Debugger
|
|
146
105
|
# 127.0.0.1 seemingly works with all systems and with IPv6 as well.
|
147
106
|
# "localhost" and nil have problems on some systems.
|
148
107
|
host ||= '127.0.0.1'
|
149
|
-
|
108
|
+
gem_name = (defined?(JRUBY_VERSION) || RUBY_VERSION < '1.9.0') ? 'ruby-debug-base' :
|
109
|
+
RUBY_VERSION < '2.0.0' ? 'ruby-debug-base19x' : 'debase'
|
110
|
+
$stderr.printf "Fast Debugger (ruby-debug-ide #{IDE_VERSION}, #{gem_name} #{VERSION}) listens on #{host}:#{port}\n"
|
150
111
|
server = TCPServer.new(host, port)
|
151
112
|
while (session = server.accept)
|
152
113
|
$stderr.puts "Connected from #{session.addr[2]}" if Debugger.cli_debug
|
@@ -156,7 +117,7 @@ module Debugger
|
|
156
117
|
end
|
157
118
|
begin
|
158
119
|
@interface = RemoteInterface.new(session)
|
159
|
-
|
120
|
+
self.handler = EventProcessor.new(interface)
|
160
121
|
IdeControlCommandProcessor.new(interface).process_commands
|
161
122
|
rescue StandardError, ScriptError => ex
|
162
123
|
bt = ex.backtrace
|
@@ -177,21 +138,4 @@ module Debugger
|
|
177
138
|
class Exception # :nodoc:
|
178
139
|
attr_reader :__debug_file, :__debug_line, :__debug_binding, :__debug_context
|
179
140
|
end
|
180
|
-
|
181
|
-
module Kernel
|
182
|
-
#
|
183
|
-
# Stops the current thread after a number of _steps_ made.
|
184
|
-
#
|
185
|
-
def debugger(steps = 1)
|
186
|
-
Debugger.current_context.stop_next = steps
|
187
|
-
end
|
188
|
-
|
189
|
-
#
|
190
|
-
# Returns a binding of n-th call frame
|
191
|
-
#
|
192
|
-
def binding_n(n = 0)
|
193
|
-
Debugger.current_context.frame_binding[n+1]
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
141
|
end
|
@@ -13,13 +13,13 @@ module Debugger
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def process_commands
|
16
|
-
unless Debugger.
|
16
|
+
unless Debugger.handler.at_line?
|
17
17
|
@printer.print_error "There is no thread suspended at the time and therefore no context to execute '#{input.gsub('%', '%%')}'"
|
18
18
|
return
|
19
19
|
end
|
20
|
-
context = Debugger.
|
21
|
-
file = Debugger.
|
22
|
-
line = Debugger.
|
20
|
+
context = Debugger.handler.context
|
21
|
+
file = Debugger.handler.file
|
22
|
+
line = Debugger.handler.line
|
23
23
|
state = State.new do |s|
|
24
24
|
s.context = context
|
25
25
|
s.file = file
|
@@ -127,6 +127,13 @@ module Debugger
|
|
127
127
|
}
|
128
128
|
end
|
129
129
|
end
|
130
|
+
|
131
|
+
def print_string(string)
|
132
|
+
print_element("variables") do
|
133
|
+
print_variable('bytes', string.bytes.to_a, 'instance') if string.respond_to?('bytes')
|
134
|
+
print_variable('encoding', string.encoding, 'instance') if string.respond_to?('encoding')
|
135
|
+
end
|
136
|
+
end
|
130
137
|
|
131
138
|
def print_variable(name, value, kind)
|
132
139
|
name = name.to_s
|
@@ -141,13 +148,20 @@ module Debugger
|
|
141
148
|
else
|
142
149
|
value_str = "#{value.class} (#{value.size} element(s))"
|
143
150
|
end
|
144
|
-
|
151
|
+
elsif value.is_a?(String)
|
152
|
+
has_children = value.respond_to?('bytes') || value.respond_to?('encoding')
|
153
|
+
value_str = value
|
154
|
+
else
|
145
155
|
has_children = !value.instance_variables.empty? || !value.class.class_variables.empty?
|
146
156
|
value_str = value.to_s || 'nil' rescue "<#to_s method raised exception: #$!>"
|
147
157
|
unless value_str.is_a?(String)
|
148
158
|
value_str = "ERROR: #{value.class}.to_s method returns #{value_str.class}. Should return String."
|
149
159
|
end
|
150
160
|
end
|
161
|
+
|
162
|
+
if value_str.respond_to?('encode')
|
163
|
+
value_str = value_str.encode("UTF-8")
|
164
|
+
end
|
151
165
|
value_str = "[Binary Data]" if (value_str.respond_to?('is_binary_data?') && value_str.is_binary_data?)
|
152
166
|
print("<variable name=\"%s\" kind=\"%s\" value=\"%s\" type=\"%s\" hasChildren=\"%s\" objectId=\"%#+x\"/>",
|
153
167
|
CGI.escapeHTML(name), kind, CGI.escapeHTML(value_str), value.class,
|
@@ -256,12 +270,12 @@ module Debugger
|
|
256
270
|
end
|
257
271
|
|
258
272
|
def print_exception(exception, binding)
|
259
|
-
|
273
|
+
print_element("variables") do
|
260
274
|
proxy = ExceptionProxy.new(exception)
|
261
275
|
InspectCommand.reference_result(proxy)
|
262
|
-
proxy
|
276
|
+
print_variable('error', proxy, 'exception')
|
263
277
|
end
|
264
|
-
rescue
|
278
|
+
rescue Exception => e
|
265
279
|
print "<processingException type=\"%s\" message=\"%s\"/>",
|
266
280
|
exception.class, CGI.escapeHTML(exception.to_s)
|
267
281
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-debug-ide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.17.
|
4
|
+
version: 0.4.17.beta16
|
5
5
|
prerelease: 7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|