debugger-xml 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/rdebug-ide +12 -9
- data/bin/rdebug-vim +30 -13
- data/debugger-xml.gemspec +7 -3
- data/lib/byebug/commands/frame.rb +16 -0
- data/lib/byebug/commands/help.rb +13 -0
- data/lib/byebug/commands/info.rb +13 -0
- data/lib/byebug/commands/inspect.rb +30 -0
- data/lib/byebug/commands/kill.rb +13 -0
- data/lib/byebug/commands/start.rb +25 -0
- data/lib/byebug/commands/threads.rb +10 -0
- data/lib/byebug/commands/trace.rb +13 -0
- data/lib/byebug/commands/variables.rb +54 -0
- data/lib/byebug/context_xml.rb +29 -0
- data/lib/byebug/printers/texts/xml.yml +122 -0
- data/lib/byebug/printers/xml.rb +197 -0
- data/lib/debugger/{xml/extensions/processor.rb → command_processor.rb} +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/edit.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/frame.rb +0 -1
- data/lib/debugger/{xml/extensions/commands → commands}/help.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/info.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/inspect.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/irb.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/kill.rb +0 -0
- data/lib/debugger/commands/start.rb +25 -0
- data/lib/debugger/{xml/extensions/commands → commands}/threads.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/tmate.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/trace.rb +0 -0
- data/lib/debugger/{xml/extensions/commands → commands}/variables.rb +14 -0
- data/lib/debugger_xml.rb +91 -0
- data/lib/debugger_xml/byebug_proxy.rb +108 -0
- data/lib/debugger_xml/debugger_proxy.rb +115 -0
- data/lib/debugger_xml/fake_logger.rb +9 -0
- data/lib/debugger_xml/ide/control_command_processor.rb +69 -0
- data/lib/debugger_xml/ide/interface.rb +74 -0
- data/lib/debugger_xml/ide/logger.rb +9 -0
- data/lib/debugger_xml/ide/processor.rb +118 -0
- data/lib/debugger_xml/multiprocess/monkey.rb +47 -0
- data/lib/debugger_xml/multiprocess/pre_child.rb +79 -0
- data/lib/{debugger/xml → debugger_xml}/multiprocess/starter.rb +2 -2
- data/lib/debugger_xml/version.rb +3 -0
- data/lib/debugger_xml/vim/control_command_processor.rb +23 -0
- data/lib/debugger_xml/vim/interface.rb +46 -0
- data/lib/debugger_xml/vim/logger.rb +16 -0
- data/lib/debugger_xml/vim/notification.rb +35 -0
- data/lib/debugger_xml/vim/processor.rb +20 -0
- data/test/breakpoints_test.rb +0 -1
- data/test/ide/control_command_processor_test.rb +18 -13
- data/test/ide/processor_test.rb +11 -25
- data/test/printers/xml_test.rb +1 -0
- data/test/test_helper.rb +12 -3
- data/test/variables_test.rb +0 -1
- data/test/vim/control_command_processor_test.rb +4 -5
- data/test/vim/interface_test.rb +6 -6
- data/test/vim/notification_test.rb +3 -3
- data/test/vim/processor_test.rb +8 -8
- metadata +61 -48
- data/lib/debugger/xml.rb +0 -11
- data/lib/debugger/xml/extensions/ide_server.rb +0 -33
- data/lib/debugger/xml/extensions/vim_server.rb +0 -56
- data/lib/debugger/xml/fake_logger.rb +0 -11
- data/lib/debugger/xml/ide/control_command_processor.rb +0 -81
- data/lib/debugger/xml/ide/interface.rb +0 -72
- data/lib/debugger/xml/ide/logger.rb +0 -11
- data/lib/debugger/xml/ide/processor.rb +0 -94
- data/lib/debugger/xml/multiprocess/monkey.rb +0 -49
- data/lib/debugger/xml/multiprocess/pre_child.rb +0 -81
- data/lib/debugger/xml/version.rb +0 -5
- data/lib/debugger/xml/vim/control_command_processor.rb +0 -19
- data/lib/debugger/xml/vim/interface.rb +0 -42
- data/lib/debugger/xml/vim/logger.rb +0 -18
- data/lib/debugger/xml/vim/notification.rb +0 -37
- data/lib/debugger/xml/vim/processor.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19c5d53c2123f938edfb1309c441c1f9c936531d
|
4
|
+
data.tar.gz: 6b287e9a8e24e25bae59e50c451d60fee31796cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1df8f6145823191d66d20a0526c4ba9c8bade1f74b2dbb28ea5ccf76c4e1772449b88cfde48b1e089db253b177e50f111e4f03b2ba973b57335f2c5c401ea1bf
|
7
|
+
data.tar.gz: e57ff1a5591d10e6e18ea2732fbc6c85b896df40f2fff73094c094fac8a145b5abbc39a736e0d6dc5276f1c9faee20c39e4eab39b6095fd682687b9b9146294b
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
## Description
|
2
2
|
|
3
|
-
This is a gem, which adds the XML printer to the 'debugger'
|
3
|
+
This is a gem, which adds the XML printer to the 'debugger' or 'byebug' gems, using the same API as
|
4
4
|
the ruby-debug-ide gem, which allows it to be used with Ruby IDEs (for example, in my
|
5
5
|
vim-ruby-debugger :))
|
6
6
|
|
data/bin/rdebug-ide
CHANGED
@@ -12,14 +12,17 @@ class RdebugIde
|
|
12
12
|
|
13
13
|
def initialize
|
14
14
|
check_argv!
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
15
|
+
@proxy = DebuggerXml::DebuggerProxy.new
|
16
|
+
@proxy.set_argv(ARGV.clone)
|
17
|
+
@proxy.set_rdebug_script(rdebug_path)
|
18
|
+
@proxy.set_prog_script(ARGV.shift)
|
19
|
+
if options.int_handler
|
20
|
+
install_interruption_handler
|
21
|
+
end
|
22
|
+
@proxy.tracing = options.tracing
|
23
|
+
@proxy.printer = Printers::Xml.new
|
24
|
+
@proxy.wait_connection = true
|
25
|
+
DebuggerXml.wait_for_start = options.wait_for_start
|
23
26
|
Debugger::Xml.logger = if options.debug_mode
|
24
27
|
Debugger::Xml::Ide::Logger.new
|
25
28
|
else
|
@@ -59,7 +62,7 @@ class RdebugIde
|
|
59
62
|
end
|
60
63
|
|
61
64
|
def install_interruption_handler
|
62
|
-
trap('INT') {
|
65
|
+
trap('INT') { @proxy.interrupt_last }
|
63
66
|
end
|
64
67
|
|
65
68
|
def rdebug_path
|
data/bin/rdebug-vim
CHANGED
@@ -3,29 +3,46 @@
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
|
4
4
|
require 'optparse'
|
5
5
|
require 'ostruct'
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
DEBUGGER_TYPE = if RUBY_VERSION < "2.0"
|
8
|
+
require 'debugger'
|
9
|
+
:debugger
|
10
|
+
else
|
11
|
+
require 'byebug'
|
12
|
+
:byebug
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'debugger_xml'
|
16
|
+
|
17
|
+
if DEBUGGER_TYPE == :debugger
|
18
|
+
PROXY_CLASS = DebuggerXml::DebuggerProxy
|
19
|
+
PRINTER_CLASS = Printers::Xml
|
20
|
+
else
|
21
|
+
PROXY_CLASS = DebuggerXml::ByebugProxy
|
22
|
+
PRINTER_CLASS = Byebug::Printers::Xml
|
23
|
+
end
|
8
24
|
|
9
25
|
class RdebugVim
|
10
26
|
|
11
27
|
def initialize
|
12
28
|
check_argv!
|
13
|
-
|
29
|
+
DebuggerXml.wait_for_start = true
|
30
|
+
@proxy = PROXY_CLASS.new
|
31
|
+
@proxy.tracing = false
|
32
|
+
@proxy.printer = PRINTER_CLASS.new
|
33
|
+
@proxy.set_rdebug_script(File.expand_path($0))
|
34
|
+
@proxy.set_prog_script(options.script)
|
14
35
|
install_interruption_hander
|
15
|
-
|
16
|
-
|
17
|
-
Debugger.printer = Printers::Xml.new
|
18
|
-
Debugger.const_set("PROG_SCRIPT", options.script)
|
19
|
-
Debugger::Xml.logger = if options.debug_mode
|
20
|
-
Debugger::Xml::Vim::Logger.new(options.logger_file)
|
36
|
+
DebuggerXml.logger = if options.debug_mode
|
37
|
+
DebuggerXml::Vim::Logger.new(options.logger_file)
|
21
38
|
else
|
22
|
-
|
39
|
+
DebuggerXml::FakeLogger.new
|
23
40
|
end
|
24
41
|
end
|
25
42
|
|
26
43
|
def run
|
27
|
-
|
28
|
-
bt =
|
44
|
+
DebuggerXml.start_for_vim(@proxy, options)
|
45
|
+
bt = @proxy.debug_load
|
29
46
|
if bt
|
30
47
|
print bt.backtrace.map{|l| "\t#{l}"}.join("\n"), "\n"
|
31
48
|
print "Uncaught exception: #{bt}\n"
|
@@ -44,7 +61,7 @@ class RdebugVim
|
|
44
61
|
end
|
45
62
|
|
46
63
|
def install_interruption_hander
|
47
|
-
trap('INT') {
|
64
|
+
trap('INT') { @proxy.interrupt_last }
|
48
65
|
end
|
49
66
|
|
50
67
|
def options
|
data/debugger-xml.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require '
|
4
|
+
require 'debugger_xml/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "debugger-xml"
|
8
|
-
gem.version =
|
8
|
+
gem.version = DebuggerXml::VERSION
|
9
9
|
gem.authors = ["Anton Astashov"]
|
10
10
|
gem.email = ["anton.astashov@gmail.com"]
|
11
11
|
gem.description = %q{XML interface for debugger}
|
@@ -18,7 +18,11 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
|
21
|
+
if RUBY_VERSION < "2.0"
|
22
|
+
gem.add_dependency 'debugger'
|
23
|
+
else
|
24
|
+
gem.add_dependency 'byebug'
|
25
|
+
end
|
22
26
|
gem.add_dependency 'builder', '>= 2.0.0'
|
23
27
|
gem.add_development_dependency 'rake', '~> 0.9.2.2'
|
24
28
|
gem.add_development_dependency 'minitest', '~> 2.12.1'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Byebug
|
2
|
+
module FrameFunctions
|
3
|
+
|
4
|
+
# Mark should be 'true' or 'false', as a String
|
5
|
+
def get_pr_arguments_with_xml(pos, mark = nil)
|
6
|
+
mark = (pos == @state.frame_pos).to_s
|
7
|
+
res = get_pr_arguments_without_xml(pos, mark)
|
8
|
+
res[:file] = File.expand_path(res[:file])
|
9
|
+
res
|
10
|
+
end
|
11
|
+
|
12
|
+
alias_method :get_pr_arguments_without_xml, :get_pr_arguments
|
13
|
+
alias_method :get_pr_arguments, :get_pr_arguments_with_xml
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Byebug
|
2
|
+
class HelpCommand < Command
|
3
|
+
|
4
|
+
def execute_with_xml(*args)
|
5
|
+
errmsg(pr("general.errors.unsupported", cmd: 'help')) && return if Byebug.printer.type == "xml"
|
6
|
+
execute_without_xml(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
alias_method :execute_without_xml, :execute
|
10
|
+
alias_method :execute, :execute_with_xml
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Byebug
|
2
|
+
class InfoCommand < Command
|
3
|
+
|
4
|
+
def execute_with_xml(*args)
|
5
|
+
errmsg(pr("general.errors.unsupported", cmd: 'info')) && return if Byebug.printer.type == "xml"
|
6
|
+
execute_without_xml(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
alias_method :execute_without_xml, :execute
|
10
|
+
alias_method :execute, :execute_with_xml
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Byebug
|
2
|
+
class InspectCommand < Command
|
3
|
+
# reference inspection results in order to save them from the GC
|
4
|
+
@@references = []
|
5
|
+
def self.reference_result(result)
|
6
|
+
@@references << result
|
7
|
+
end
|
8
|
+
def self.clear_references
|
9
|
+
@@references = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def regexp
|
13
|
+
/^\s*v(?:ar)?\s+inspect\s+/
|
14
|
+
end
|
15
|
+
|
16
|
+
def execute
|
17
|
+
run_with_binding do |binding|
|
18
|
+
obj = debug_eval(@match.post_match, binding)
|
19
|
+
InspectCommand.reference_result(obj)
|
20
|
+
print prv({eval_result: obj}, "local")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def help
|
25
|
+
%{
|
26
|
+
v[ar] instpect <object>\tinpect a given object (supposed to be used only from ide)
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Byebug
|
2
|
+
class KillCommand < Command
|
3
|
+
|
4
|
+
def execute_with_xml(*args)
|
5
|
+
errmsg(pr("general.errors.unsupported", cmd: 'kill')) && return if Byebug.printer.type == "xml"
|
6
|
+
execute_without_xml(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
alias_method :execute_without_xml, :execute
|
10
|
+
alias_method :execute, :execute_with_xml
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Byebug
|
2
|
+
class StartCommand < Command # :nodoc:
|
3
|
+
self.allow_in_control = true
|
4
|
+
|
5
|
+
def regexp
|
6
|
+
/^\s*(start)\s*$/ix
|
7
|
+
end
|
8
|
+
|
9
|
+
def execute
|
10
|
+
DebuggerXml.proceed
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def help_command
|
15
|
+
'start'
|
16
|
+
end
|
17
|
+
|
18
|
+
def help(cmd)
|
19
|
+
%{
|
20
|
+
run prog script
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Byebug
|
2
|
+
module ThreadFunctions # :nodoc:
|
3
|
+
def thread_arguments_with_pid(context, should_show_top_frame = true)
|
4
|
+
thread_arguments_without_pid(context, should_show_top_frame).merge(pid: Process.pid)
|
5
|
+
end
|
6
|
+
|
7
|
+
alias_method :thread_arguments_without_pid, :thread_arguments
|
8
|
+
alias_method :thread_arguments, :thread_arguments_with_pid
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Byebug
|
2
|
+
class TracevarCommand < Command
|
3
|
+
|
4
|
+
def execute_with_xml(*args)
|
5
|
+
errmsg(pr("general.errors.unsupported", cmd: 'trace')) && return if Byebug.printer.type == "xml"
|
6
|
+
execute_without_xml(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
alias_method :execute_without_xml, :execute
|
10
|
+
alias_method :execute, :execute_with_xml
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Byebug
|
2
|
+
module VarFunctions # :nodoc:
|
3
|
+
|
4
|
+
def var_global
|
5
|
+
var_list(global_variables.reject { |v| [:$=, :$KCODE, :$-K, :$FILENAME].include?(v) })
|
6
|
+
end
|
7
|
+
|
8
|
+
end
|
9
|
+
class VarInstanceCommand < Command
|
10
|
+
|
11
|
+
def execute_with_xml(*args)
|
12
|
+
if Byebug.printer.type == "xml"
|
13
|
+
DebuggerXml.logger.puts("match: #{@match}")
|
14
|
+
DebuggerXml.logger.puts("THE OBJ: #{get_obj(@match).inspect}")
|
15
|
+
print Byebug.printer.print_instance_variables(get_obj(@match))
|
16
|
+
else
|
17
|
+
execute_without_xml(*args)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
alias_method :execute_without_xml, :execute
|
22
|
+
alias_method :execute, :execute_with_xml
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def get_obj(match)
|
27
|
+
if match[1]
|
28
|
+
begin
|
29
|
+
DebuggerXml.logger.puts("Getting object space")
|
30
|
+
ObjectSpace._id2ref(match[1].hex)
|
31
|
+
rescue RangeError
|
32
|
+
errmsg "Unknown object id : %s" % match[1]
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
else
|
36
|
+
bb_warning_eval(match.post_match.empty? ? 'self' : match.post_match)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class VarIdeCommand < Command
|
42
|
+
def regexp
|
43
|
+
/^\s*v(?:ar)?\s+ide\s*$/
|
44
|
+
end
|
45
|
+
|
46
|
+
def execute
|
47
|
+
locals = []
|
48
|
+
_self = @state.context.frame_self(@state.frame_pos)
|
49
|
+
locals << ['self', _self] unless _self.to_s == "main"
|
50
|
+
locals += @state.context.frame_locals(@state.frame_pos).sort.map { |key, value| [key, value] }
|
51
|
+
print prv(locals, 'instance')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Byebug
|
2
|
+
class Context
|
3
|
+
class << self
|
4
|
+
IGNORED_XML_FILES = Dir.glob(File.expand_path('../../../**/*', __FILE__))
|
5
|
+
|
6
|
+
def stack_size(byebug_frames = false)
|
7
|
+
backtrace = Thread.current.backtrace_locations(0)
|
8
|
+
return 0 unless backtrace
|
9
|
+
|
10
|
+
unless byebug_frames
|
11
|
+
backtrace = backtrace.select { |l| !ignored(l.path) }
|
12
|
+
end
|
13
|
+
backtrace.size
|
14
|
+
end
|
15
|
+
|
16
|
+
def ignored_with_xml(path)
|
17
|
+
result = ignored_without_xml(path) ||
|
18
|
+
IGNORED_XML_FILES.include?(path) ||
|
19
|
+
!!path.match(/^\(eval\)/) ||
|
20
|
+
!!path.match(/rdebug-vim$/) ||
|
21
|
+
!!path.match(/rdebug-ide$/)
|
22
|
+
result
|
23
|
+
end
|
24
|
+
|
25
|
+
alias_method :ignored_without_xml, :ignored
|
26
|
+
alias_method :ignored, :ignored_with_xml
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
general:
|
2
|
+
errors:
|
3
|
+
unsupported: "Unsupported command '{cmd}'"
|
4
|
+
|
5
|
+
breakpoints:
|
6
|
+
set_breakpoint_to_line:
|
7
|
+
tag: breakpointAdded
|
8
|
+
attributes:
|
9
|
+
"no": "{id}"
|
10
|
+
location: "{file}:{line}"
|
11
|
+
set_breakpoint_to_method:
|
12
|
+
tag: breakpointAdded
|
13
|
+
attributes:
|
14
|
+
"no": "{id}"
|
15
|
+
method: "{class}::{method}"
|
16
|
+
stop_at_breakpoint:
|
17
|
+
tag: breakpoint
|
18
|
+
attributes:
|
19
|
+
file: "{file}"
|
20
|
+
line: "{line}"
|
21
|
+
threadId: "{thread_id}"
|
22
|
+
delete:
|
23
|
+
tag: breakpointDeleted
|
24
|
+
attributes:
|
25
|
+
"no": "{id}"
|
26
|
+
|
27
|
+
conditions:
|
28
|
+
set_condition:
|
29
|
+
tag: conditionSet
|
30
|
+
attributes:
|
31
|
+
bp_id: "{id}"
|
32
|
+
unset_condition:
|
33
|
+
tag: conditionSet # Would ideally be conditionUnset, but we keep compatibility with old ruby-debug-ide
|
34
|
+
attributes:
|
35
|
+
bp_id: "{id}"
|
36
|
+
|
37
|
+
display:
|
38
|
+
result:
|
39
|
+
tag: display
|
40
|
+
attributes:
|
41
|
+
key: "{exp}"
|
42
|
+
value: "{result}"
|
43
|
+
|
44
|
+
eval:
|
45
|
+
exception:
|
46
|
+
tag: processingException
|
47
|
+
attributes:
|
48
|
+
type: "{class}"
|
49
|
+
message: "{value}"
|
50
|
+
result:
|
51
|
+
tag: eval
|
52
|
+
attributes:
|
53
|
+
expression: "{expr}"
|
54
|
+
value: "{result}"
|
55
|
+
|
56
|
+
frame:
|
57
|
+
line:
|
58
|
+
tag: frame
|
59
|
+
attributes:
|
60
|
+
"no": "{pos}"
|
61
|
+
file: "{file}"
|
62
|
+
line: "{line}"
|
63
|
+
current: "{mark}"
|
64
|
+
|
65
|
+
method:
|
66
|
+
methods:
|
67
|
+
tag: method
|
68
|
+
attributes:
|
69
|
+
name: "{name}"
|
70
|
+
|
71
|
+
stop:
|
72
|
+
suspend:
|
73
|
+
tag: suspended
|
74
|
+
attributes:
|
75
|
+
file: "{file}"
|
76
|
+
line: "{line_number}"
|
77
|
+
threadId: "{thnum}"
|
78
|
+
frames: "{frames}"
|
79
|
+
|
80
|
+
toggle:
|
81
|
+
breakpoint_enabled:
|
82
|
+
tag: breakpointEnabled
|
83
|
+
attributes:
|
84
|
+
bp_id: "{id}"
|
85
|
+
breakpoint_disabled:
|
86
|
+
tag: breakpointDisabled
|
87
|
+
attributes:
|
88
|
+
bp_id: "{id}"
|
89
|
+
|
90
|
+
restart:
|
91
|
+
success:
|
92
|
+
tag: restart
|
93
|
+
attributes:
|
94
|
+
command: "{cmd}"
|
95
|
+
|
96
|
+
set:
|
97
|
+
errors:
|
98
|
+
no_subcommand: "'set' must be followed by the name of a subcommand"
|
99
|
+
|
100
|
+
show:
|
101
|
+
errors:
|
102
|
+
no_subcommand: "'show' must be followed by the name of a subcommand"
|
103
|
+
|
104
|
+
thread:
|
105
|
+
context:
|
106
|
+
tag: thread
|
107
|
+
attributes:
|
108
|
+
id: "{id}"
|
109
|
+
status: "{status}"
|
110
|
+
current: "{current}"
|
111
|
+
pid: "{pid}"
|
112
|
+
|
113
|
+
variable:
|
114
|
+
variable:
|
115
|
+
tag: variable
|
116
|
+
attributes:
|
117
|
+
name: "{name}"
|
118
|
+
kind: "{kind}"
|
119
|
+
value: "{value}"
|
120
|
+
type: "{type}"
|
121
|
+
hasChildren: "{has_children}"
|
122
|
+
objectId: "{id}"
|