ruby-debug-ide 0.1.10 → 0.2.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.
@@ -46,6 +46,10 @@ module Debugger
46
46
  def at_line(file, line)
47
47
  event_processor.at_line(self, file, line)
48
48
  end
49
+
50
+ def at_return(file, line)
51
+ event_processor.at_return(self, file, line)
52
+ end
49
53
  end
50
54
 
51
55
  class << self
@@ -79,13 +83,15 @@ module Debugger
79
83
 
80
84
  start_control(host, port)
81
85
 
86
+ raise "Control thread did not start (#{@control_thread}}" unless @control_thread && @control_thread.alive?
87
+
82
88
  @mutex = Mutex.new
83
89
  @proceed = ConditionVariable.new
84
90
 
85
- # wait for start command
91
+ # wait for 'start' command
86
92
  @mutex.synchronize do
87
93
  @proceed.wait(@mutex)
88
- end
94
+ end
89
95
 
90
96
  debug_load Debugger::PROG_SCRIPT
91
97
  end
@@ -100,7 +106,9 @@ module Debugger
100
106
  raise "Debugger is not started" unless started?
101
107
  return if @control_thread
102
108
  @control_thread = DebugThread.new do
109
+ host ||= 'localhost' # nil does not seem to work for IPv6, localhost does
103
110
  Debugger.print_debug("Waiting for connection on '#{host}:#{port}'")
111
+ $stderr.puts "Fast Debugger (ruby-debug-ide 0.2.0) listens on #{host}:#{port}"
104
112
  server = TCPServer.new(host, port)
105
113
  while (session = server.accept)
106
114
  begin
@@ -3,6 +3,22 @@ require 'ruby-debug/helper'
3
3
  module Debugger
4
4
 
5
5
  class Command # :nodoc:
6
+ SubcmdStruct=Struct.new(:name, :min, :short_help, :long_help) unless
7
+ defined?(SubcmdStruct)
8
+
9
+ # Find param in subcmds. param id downcased and can be abbreviated
10
+ # to the minimum length listed in the subcommands
11
+ def find(subcmds, param)
12
+ param.downcase!
13
+ for try_subcmd in subcmds do
14
+ if (param.size >= try_subcmd.min) and
15
+ (try_subcmd.name[0..param.size-1] == param)
16
+ return try_subcmd
17
+ end
18
+ end
19
+ return nil
20
+ end
21
+
6
22
  class << self
7
23
  def commands
8
24
  @commands ||= []
@@ -67,6 +83,11 @@ module Debugger
67
83
  end
68
84
  end
69
85
 
86
+ # FIXME: use delegate?
87
+ def errmsg(*args)
88
+ @printer.print_error(*args)
89
+ end
90
+
70
91
  def print(*args)
71
92
  @state.print(*args)
72
93
  end
@@ -3,24 +3,20 @@ module Debugger
3
3
  self.control = true
4
4
 
5
5
  def regexp
6
- /^\s*cat(?:ch)?(?:\s+(.+))?$/
6
+ /^\s* cat(?:ch)? (?:\s+(.+))? $/x
7
7
  end
8
8
 
9
9
  def execute
10
- if excn = @match[1]
11
- if excn == 'off'
12
- Debugger.catchpoint = nil
13
- print_msg "Clear catchpoint."
14
- else
15
- Debugger.catchpoint = excn
16
- print_msg "Set catchpoint %s.", excn
17
- end
10
+ excn = @match[1]
11
+ unless excn
12
+ errmsg "Exception class must be specified for 'catch' command"
18
13
  else
19
- if Debugger.catchpoint
20
- print_msg "Catchpoint %s.", Debugger.catchpoint
21
- else
22
- print_msg "No catchpoint."
14
+ binding = @state.context ? get_binding : TOPLEVEL_BINDING
15
+ unless debug_eval("#{excn}.is_a?(Class)", binding)
16
+ print_msg "Warning #{excn} is not known to be a Class"
23
17
  end
18
+ Debugger.add_catchpoint(excn)
19
+ print_msg "Set catchpoint %s.", excn
24
20
  end
25
21
  end
26
22
 
@@ -37,4 +33,4 @@ module Debugger
37
33
  end
38
34
  end
39
35
  end
40
- end
36
+ end
@@ -0,0 +1,51 @@
1
+ module Debugger
2
+
3
+ class ConditionCommand < Command # :nodoc:
4
+ self.control = true
5
+
6
+ def regexp
7
+ /^\s* cond(?:ition)? (?:\s+(\d+)\s*(.*))?$/ix
8
+ end
9
+
10
+ def execute
11
+ if not @match[1]
12
+ errmsg "\"condition\" must be followed a breakpoint number and expression\n"
13
+ else
14
+ breakpoints = Debugger.breakpoints.sort_by{|b| b.id }
15
+ largest = breakpoints.inject(0) do |largest, b|
16
+ largest = b.id if b.id > largest
17
+ end
18
+ if 0 == largest
19
+ print "No breakpoints have been set.\n"
20
+ return
21
+ end
22
+ pos = get_int(@match[1], "Condition", 1, largest)
23
+ return unless pos
24
+ breakpoints.each do |b|
25
+ if b.id == pos
26
+ b.expr = @match[2].empty? ? nil : @match[2]
27
+ print_contdition_set(b.id)
28
+ break
29
+ end
30
+ end
31
+
32
+ end
33
+ end
34
+
35
+ class << self
36
+ def help_command
37
+ 'condition'
38
+ end
39
+
40
+ def help(cmd)
41
+ %{
42
+ Condition breakpoint-number expression
43
+ Specify breakpoint number N to break only if COND is true.
44
+ N is an integer and COND is an expression to be evaluated whenever
45
+ breakpoint N is reached. If the empty string is used, the condition is removed.
46
+ }
47
+ end
48
+ end
49
+ end
50
+
51
+ end # module Debugger
@@ -0,0 +1,203 @@
1
+ module Debugger
2
+ # Mix-in module to assist in command parsing.
3
+ module EnableDisableFunctions # :nodoc:
4
+ def enable_disable_breakpoints(is_enable, args)
5
+ breakpoints = Debugger.breakpoints.sort_by{|b| b.id }
6
+ largest = breakpoints.inject(0) do |largest, b|
7
+ largest = b.id if b.id > largest
8
+ end
9
+ if 0 == largest
10
+ errmsg "No breakpoints have been set.\n"
11
+ return
12
+ end
13
+ args.each do |pos|
14
+ pos = get_int(pos, "#{is_enable} breakpoints", 1, largest)
15
+ return nil unless pos
16
+ breakpoints.each do |b|
17
+ if b.id == pos
18
+ enabled = ("Enable" == is_enable)
19
+ if enabled
20
+ unless syntax_valid?(b.expr)
21
+ errmsg("Expression \"#{b.expr}\" syntactically incorrect; breakpoint remains disabled.\n")
22
+ break
23
+ end
24
+ end
25
+ b.enabled = enabled
26
+ enabled ? print_breakpoint_enabled(b) : print_breakpoint_disabled(b)
27
+ break
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ def enable_disable_display(is_enable, args)
34
+ if 0 == @state.display.size
35
+ errmsg "No display expressions have been set.\n"
36
+ return
37
+ end
38
+ args.each do |pos|
39
+ pos = get_int(pos, "#{is_enable} display", 1, @state.display.size)
40
+ return nil unless pos
41
+ @state.display[pos-1][0] = ("Enable" == is_enable)
42
+ end
43
+ end
44
+
45
+ end
46
+
47
+ class EnableCommand < Command # :nodoc:
48
+ Subcommands =
49
+ [
50
+ ['breakpoints', 2, "Enable specified breakpoints",
51
+ "Give breakpoint numbers (separated by spaces) as arguments.
52
+ This is used to cancel the effect of the \"disable\" command."
53
+ ],
54
+ ['display', 2,
55
+ "Enable some expressions to be displayed when program stops",
56
+ "Arguments are the code numbers of the expressions to resume displaying.
57
+ Do \"info display\" to see current list of code numbers."],
58
+ ].map do |name, min, short_help, long_help|
59
+ SubcmdStruct.new(name, min, short_help, long_help)
60
+ end unless defined?(Subcommands)
61
+
62
+ def regexp
63
+ /^\s* en(?:able)? (?:\s+(.*))?$/ix
64
+ end
65
+
66
+ def execute
67
+ if not @match[1]
68
+ errmsg "\"enable\" must be followed \"display\", \"breakpoints\"" +
69
+ " or breakpoint numbers.\n"
70
+ else
71
+ args = @match[1].split(/[ \t]+/)
72
+ param = args.shift
73
+ subcmd = find(Subcommands, param)
74
+ if subcmd
75
+ send("enable_#{subcmd.name}", args)
76
+ else
77
+ send("enable_breakpoints", args.unshift(param))
78
+ end
79
+ end
80
+ end
81
+
82
+ def enable_breakpoints(args)
83
+ enable_disable_breakpoints("Enable", args)
84
+ end
85
+
86
+ def enable_display(args)
87
+ enable_disable_display("Enable", args)
88
+ end
89
+
90
+ class << self
91
+ def help_command
92
+ 'enable'
93
+ end
94
+
95
+ def help(args)
96
+ if args[1]
97
+ s = args[1]
98
+ subcmd = Subcommands.find do |try_subcmd|
99
+ (s.size >= try_subcmd.min) and
100
+ (try_subcmd.name[0..s.size-1] == s)
101
+ end
102
+ if subcmd
103
+ str = subcmd.short_help + '.'
104
+ str += "\n" + subcmd.long_help if subcmd.long_help
105
+ return str
106
+ else
107
+ return "Invalid 'enable' subcommand '#{args[1]}'."
108
+ end
109
+ end
110
+ s = %{
111
+ Enable some things.
112
+ This is used to cancel the effect of the "disable" command.
113
+ --
114
+ List of enable subcommands:
115
+ --
116
+ }
117
+ for subcmd in Subcommands do
118
+ s += "enable #{subcmd.name} -- #{subcmd.short_help}\n"
119
+ end
120
+ return s
121
+ end
122
+ end
123
+ end
124
+
125
+ class DisableCommand < Command # :nodoc:
126
+ Subcommands =
127
+ [
128
+ ['breakpoints', 1, "Disable some breakpoints",
129
+ "Arguments are breakpoint numbers with spaces in between.
130
+ A disabled breakpoint is not forgotten, but has no effect until reenabled."],
131
+ ['display', 1, "Disable some display expressions when program stops",
132
+ "Arguments are the code numbers of the expressions to stop displaying.
133
+ Do \"info display\" to see current list of code numbers."],
134
+ ].map do |name, min, short_help, long_help|
135
+ SubcmdStruct.new(name, min, short_help, long_help)
136
+ end unless defined?(Subcommands)
137
+
138
+ def regexp
139
+ /^\s* dis(?:able)? (?:\s+(.*))?$/ix
140
+ end
141
+
142
+ def execute
143
+ if not @match[1]
144
+ errmsg "\"disable\" must be followed \"display\", \"breakpoints\"" +
145
+ " or breakpoint numbers.\n"
146
+ else
147
+ args = @match[1].split(/[ \t]+/)
148
+ param = args.shift
149
+ subcmd = find(Subcommands, param)
150
+ if subcmd
151
+ send("disable_#{subcmd.name}", args)
152
+ else
153
+ send("disable_breakpoints", args.unshift(param))
154
+ end
155
+ end
156
+ end
157
+
158
+ def disable_breakpoints(args)
159
+ enable_disable_breakpoints("Disable", args)
160
+ end
161
+
162
+ def disable_display(args)
163
+ enable_disable_display("Disable", args)
164
+ end
165
+
166
+ class << self
167
+ def help_command
168
+ 'disable'
169
+ end
170
+
171
+ def help(args)
172
+ if args[1]
173
+ s = args[1]
174
+ subcmd = Subcommands.find do |try_subcmd|
175
+ (s.size >= try_subcmd.min) and
176
+ (try_subcmd.name[0..s.size-1] == s)
177
+ end
178
+ if subcmd
179
+ str = subcmd.short_help + '.'
180
+ str += "\n" + subcmd.long_help if subcmd.long_help
181
+ return str
182
+ else
183
+ return "Invalid 'disable' subcommand '#{args[1]}'."
184
+ end
185
+ end
186
+ s = %{
187
+ Disable some things.
188
+
189
+ A disabled item is not forgotten, but has no effect until reenabled.
190
+ Use the "enable" command to have it take effect again.
191
+ --
192
+ List of disable subcommands:
193
+ --
194
+ }
195
+ for subcmd in Subcommands do
196
+ s += "disable #{subcmd.name} -- #{subcmd.short_help}\n"
197
+ end
198
+ return s
199
+ end
200
+ end
201
+ end
202
+
203
+ end # module Debugger
@@ -0,0 +1,168 @@
1
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
2
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
3
+ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
4
+ !_TAG_PROGRAM_NAME Exuberant Ctags //
5
+ !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
6
+ !_TAG_PROGRAM_VERSION 5.7 //
7
+ AddBreakpoint breakpoints.rb /^ class AddBreakpoint < Command # :nodoc:$/;" c class:Debugger
8
+ BreakpointsCommand breakpoints.rb /^ class BreakpointsCommand < Command # :nodoc:$/;" c
9
+ CatchCommand catchpoint.rb /^ class CatchCommand < Command # :nodoc:$/;" c class:Debugger
10
+ ConditionCommand condition.rb /^ class ConditionCommand < Command # :nodoc:$/;" c class:Debugger
11
+ ContinueCommand stepping.rb /^ class ContinueCommand < Command # :nodoc:$/;" c
12
+ Debugger breakpoints.rb /^module Debugger$/;" m
13
+ Debugger catchpoint.rb /^module Debugger$/;" m
14
+ Debugger condition.rb /^module Debugger$/;" m
15
+ Debugger control.rb /^module Debugger$/;" m
16
+ Debugger eval.rb /^module Debugger$/;" m
17
+ Debugger frame.rb /^module Debugger$/;" m
18
+ Debugger inspect.rb /^module Debugger$/;" m
19
+ Debugger load.rb /^module Debugger$/;" m
20
+ Debugger stepping.rb /^module Debugger$/;" m
21
+ Debugger threads.rb /^module Debugger$/;" m
22
+ Debugger variables.rb /^module Debugger$/;" m
23
+ DeleteBreakpointCommand breakpoints.rb /^ class DeleteBreakpointCommand < Command # :nodoc:$/;" c
24
+ DownCommand frame.rb /^ class DownCommand < Command # :nodoc:$/;" c
25
+ EvalCommand eval.rb /^ class EvalCommand < Command # :nodoc:$/;" c class:Debugger
26
+ FinishCommand stepping.rb /^ class FinishCommand < Command # :nodoc:$/;" c
27
+ FrameCommand frame.rb /^ class FrameCommand < Command # :nodoc:$/;" c
28
+ FrameFunctions frame.rb /^ module FrameFunctions # :nodoc:$/;" m class:Debugger
29
+ InspectCommand inspect.rb /^ class InspectCommand < Command$/;" c class:Debugger
30
+ InterruptCommand control.rb /^ class InterruptCommand < Command # :nodoc:$/;" c
31
+ LoadCommand load.rb /^ class LoadCommand < Command $/;" c class:Debugger
32
+ NextCommand stepping.rb /^ class NextCommand < Command # :nodoc:$/;" c class:Debugger
33
+ PPCommand eval.rb /^ class PPCommand < Command # :nodoc:$/;" c
34
+ QuitCommand control.rb /^ class QuitCommand < Command # :nodoc:$/;" c class:Debugger
35
+ RestartCommand control.rb /^ class RestartCommand < Command # :nodoc:$/;" c
36
+ StartCommand control.rb /^ class StartCommand < Command # :nodoc:$/;" c
37
+ StepCommand stepping.rb /^ class StepCommand < Command # :nodoc:$/;" c
38
+ ThreadCurrentCommand threads.rb /^ class ThreadCurrentCommand < Command # :nodoc:$/;" c
39
+ ThreadListCommand threads.rb /^ class ThreadListCommand < Command # :nodoc:$/;" c class:Debugger
40
+ ThreadResumeCommand threads.rb /^ class ThreadResumeCommand < Command # :nodoc:$/;" c
41
+ ThreadStopCommand threads.rb /^ class ThreadStopCommand < Command # :nodoc:$/;" c
42
+ ThreadSwitchCommand threads.rb /^ class ThreadSwitchCommand < Command # :nodoc:$/;" c
43
+ UpCommand frame.rb /^ class UpCommand < Command # :nodoc:$/;" c
44
+ VarConstantCommand variables.rb /^ class VarConstantCommand < Command # :nodoc:$/;" c class:Debugger
45
+ VarGlobalCommand variables.rb /^ class VarGlobalCommand < Command # :nodoc:$/;" c
46
+ VarInstanceCommand variables.rb /^ class VarInstanceCommand < Command # :nodoc:$/;" c
47
+ VarLocalCommand variables.rb /^ class VarLocalCommand < Command # :nodoc:$/;" c
48
+ WhereCommand frame.rb /^ class WhereCommand < Command # :nodoc:$/;" c class:Debugger
49
+ adjust_frame frame.rb /^ def adjust_frame(frame_pos, absolute)$/;" f class:Debugger.FrameFunctions
50
+ clear_references inspect.rb /^ def self.clear_references$/;" F class:Debugger.InspectCommand
51
+ execute breakpoints.rb /^ def execute$/;" f class:BreakpointsCommand
52
+ execute breakpoints.rb /^ def execute$/;" f class:Debugger.AddBreakpoint
53
+ execute breakpoints.rb /^ def execute$/;" f class:DeleteBreakpointCommand
54
+ execute catchpoint.rb /^ def execute$/;" f class:Debugger.CatchCommand
55
+ execute condition.rb /^ def execute$/;" f class:Debugger.ConditionCommand
56
+ execute control.rb /^ def execute$/;" f class:Debugger.QuitCommand
57
+ execute control.rb /^ def execute$/;" f class:InterruptCommand
58
+ execute control.rb /^ def execute$/;" f class:RestartCommand
59
+ execute control.rb /^ def execute$/;" f class:StartCommand
60
+ execute eval.rb /^ def execute$/;" f class:Debugger.EvalCommand
61
+ execute eval.rb /^ def execute$/;" f class:PPCommand
62
+ execute frame.rb /^ def execute$/;" f class:Debugger.WhereCommand
63
+ execute frame.rb /^ def execute$/;" f class:DownCommand
64
+ execute frame.rb /^ def execute$/;" f class:FrameCommand
65
+ execute frame.rb /^ def execute$/;" f class:UpCommand
66
+ execute inspect.rb /^ def execute$/;" f class:Debugger.InspectCommand
67
+ execute load.rb /^ def execute$/;" f class:Debugger.LoadCommand
68
+ execute stepping.rb /^ def execute$/;" f class:ContinueCommand
69
+ execute stepping.rb /^ def execute$/;" f class:Debugger.NextCommand
70
+ execute stepping.rb /^ def execute$/;" f class:FinishCommand
71
+ execute stepping.rb /^ def execute$/;" f class:StepCommand
72
+ execute threads.rb /^ def execute$/;" f class:Debugger.ThreadListCommand
73
+ execute threads.rb /^ def execute$/;" f class:ThreadCurrentCommand
74
+ execute threads.rb /^ def execute$/;" f class:ThreadResumeCommand
75
+ execute threads.rb /^ def execute$/;" f class:ThreadStopCommand
76
+ execute threads.rb /^ def execute$/;" f class:ThreadSwitchCommand
77
+ execute variables.rb /^ def execute$/;" f class:Debugger.VarConstantCommand
78
+ execute variables.rb /^ def execute$/;" f class:VarGlobalCommand
79
+ execute variables.rb /^ def execute$/;" f class:VarInstanceCommand
80
+ execute variables.rb /^ def execute$/;" f class:VarLocalCommand
81
+ help breakpoints.rb /^ def help(cmd)$/;" f class:BreakpointsCommand
82
+ help breakpoints.rb /^ def help(cmd)$/;" f class:Debugger.AddBreakpoint
83
+ help breakpoints.rb /^ def help(cmd)$/;" f class:DeleteBreakpointCommand
84
+ help catchpoint.rb /^ def help(cmd)$/;" f class:Debugger.CatchCommand
85
+ help condition.rb /^ def help(cmd)$/;" f class:Debugger.ConditionCommand
86
+ help control.rb /^ def help(cmd)$/;" f class:Debugger.QuitCommand
87
+ help control.rb /^ def help(cmd)$/;" f class:InterruptCommand
88
+ help control.rb /^ def help(cmd)$/;" f class:RestartCommand
89
+ help control.rb /^ def help(cmd)$/;" f class:StartCommand
90
+ help eval.rb /^ def help(cmd)$/;" f class:Debugger.EvalCommand
91
+ help eval.rb /^ def help(cmd)$/;" f class:PPCommand
92
+ help frame.rb /^ def help(cmd)$/;" f class:Debugger.WhereCommand
93
+ help frame.rb /^ def help(cmd)$/;" f class:DownCommand
94
+ help frame.rb /^ def help(cmd)$/;" f class:FrameCommand
95
+ help frame.rb /^ def help(cmd)$/;" f class:UpCommand
96
+ help stepping.rb /^ def help(cmd)$/;" f class:ContinueCommand
97
+ help stepping.rb /^ def help(cmd)$/;" f class:Debugger.NextCommand
98
+ help stepping.rb /^ def help(cmd)$/;" f class:FinishCommand
99
+ help stepping.rb /^ def help(cmd)$/;" f class:StepCommand
100
+ help threads.rb /^ def help(cmd)$/;" f class:Debugger.ThreadListCommand
101
+ help threads.rb /^ def help(cmd)$/;" f class:ThreadCurrentCommand
102
+ help threads.rb /^ def help(cmd)$/;" f class:ThreadResumeCommand
103
+ help threads.rb /^ def help(cmd)$/;" f class:ThreadStopCommand
104
+ help threads.rb /^ def help(cmd)$/;" f class:ThreadSwitchCommand
105
+ help variables.rb /^ def help(cmd)$/;" f
106
+ help variables.rb /^ def help(cmd)$/;" f class:Debugger
107
+ help variables.rb /^ def help(cmd)$/;" f class:VarGlobalCommand
108
+ help variables.rb /^ def help(cmd)$/;" f class:VarLocalCommand
109
+ help_command breakpoints.rb /^ def help_command$/;" f class:BreakpointsCommand
110
+ help_command breakpoints.rb /^ def help_command$/;" f class:Debugger.AddBreakpoint
111
+ help_command breakpoints.rb /^ def help_command$/;" f class:DeleteBreakpointCommand
112
+ help_command catchpoint.rb /^ def help_command$/;" f class:Debugger.CatchCommand
113
+ help_command condition.rb /^ def help_command$/;" f class:Debugger.ConditionCommand
114
+ help_command control.rb /^ def help_command$/;" f class:Debugger.QuitCommand
115
+ help_command control.rb /^ def help_command$/;" f class:InterruptCommand
116
+ help_command control.rb /^ def help_command$/;" f class:RestartCommand
117
+ help_command control.rb /^ def help_command$/;" f class:StartCommand
118
+ help_command eval.rb /^ def help_command$/;" f class:Debugger.EvalCommand
119
+ help_command eval.rb /^ def help_command$/;" f class:PPCommand
120
+ help_command frame.rb /^ def help_command$/;" f class:Debugger.WhereCommand
121
+ help_command frame.rb /^ def help_command$/;" f class:DownCommand
122
+ help_command frame.rb /^ def help_command$/;" f class:FrameCommand
123
+ help_command frame.rb /^ def help_command$/;" f class:UpCommand
124
+ help_command stepping.rb /^ def help_command$/;" f class:ContinueCommand
125
+ help_command stepping.rb /^ def help_command$/;" f class:Debugger.NextCommand
126
+ help_command stepping.rb /^ def help_command$/;" f class:FinishCommand
127
+ help_command stepping.rb /^ def help_command$/;" f class:StepCommand
128
+ help_command threads.rb /^ def help_command$/;" f class:Debugger.ThreadListCommand
129
+ help_command threads.rb /^ def help_command$/;" f class:ThreadCurrentCommand
130
+ help_command threads.rb /^ def help_command$/;" f class:ThreadResumeCommand
131
+ help_command threads.rb /^ def help_command$/;" f class:ThreadStopCommand
132
+ help_command threads.rb /^ def help_command$/;" f class:ThreadSwitchCommand
133
+ help_command variables.rb /^ def help_command$/;" f
134
+ help_command variables.rb /^ def help_command$/;" f class:Debugger
135
+ help_command variables.rb /^ def help_command$/;" f class:VarGlobalCommand
136
+ help_command variables.rb /^ def help_command$/;" f class:VarLocalCommand
137
+ match eval.rb /^ def match(input)$/;" f class:Debugger.EvalCommand
138
+ reference_result inspect.rb /^ def self.reference_result(result)$/;" F class:Debugger.InspectCommand
139
+ regexp breakpoints.rb /^ def regexp$/;" f class:BreakpointsCommand
140
+ regexp breakpoints.rb /^ def regexp$/;" f class:Debugger.AddBreakpoint
141
+ regexp breakpoints.rb /^ def regexp$/;" f class:DeleteBreakpointCommand
142
+ regexp catchpoint.rb /^ def regexp$/;" f class:Debugger.CatchCommand
143
+ regexp condition.rb /^ def regexp$/;" f class:Debugger.ConditionCommand
144
+ regexp control.rb /^ def regexp$/;" f class:Debugger.QuitCommand
145
+ regexp control.rb /^ def regexp$/;" f class:InterruptCommand
146
+ regexp control.rb /^ def regexp$/;" f class:RestartCommand
147
+ regexp control.rb /^ def regexp$/;" f class:StartCommand
148
+ regexp eval.rb /^ def regexp$/;" f class:Debugger.EvalCommand
149
+ regexp eval.rb /^ def regexp$/;" f class:PPCommand
150
+ regexp frame.rb /^ def regexp$/;" f class:Debugger.WhereCommand
151
+ regexp frame.rb /^ def regexp$/;" f class:DownCommand
152
+ regexp frame.rb /^ def regexp$/;" f class:FrameCommand
153
+ regexp frame.rb /^ def regexp$/;" f class:UpCommand
154
+ regexp inspect.rb /^ def regexp$/;" f class:Debugger.InspectCommand
155
+ regexp load.rb /^ def regexp$/;" f class:Debugger.LoadCommand
156
+ regexp stepping.rb /^ def regexp$/;" f class:ContinueCommand
157
+ regexp stepping.rb /^ def regexp$/;" f class:Debugger.NextCommand
158
+ regexp stepping.rb /^ def regexp$/;" f class:FinishCommand
159
+ regexp stepping.rb /^ def regexp$/;" f class:StepCommand
160
+ regexp threads.rb /^ def regexp$/;" f class:Debugger.ThreadListCommand
161
+ regexp threads.rb /^ def regexp$/;" f class:ThreadCurrentCommand
162
+ regexp threads.rb /^ def regexp$/;" f class:ThreadResumeCommand
163
+ regexp threads.rb /^ def regexp$/;" f class:ThreadStopCommand
164
+ regexp threads.rb /^ def regexp$/;" f class:ThreadSwitchCommand
165
+ regexp variables.rb /^ def regexp$/;" f class:Debugger.VarConstantCommand
166
+ regexp variables.rb /^ def regexp$/;" f class:VarGlobalCommand
167
+ regexp variables.rb /^ def regexp$/;" f class:VarInstanceCommand
168
+ regexp variables.rb /^ def regexp$/;" f class:VarLocalCommand
@@ -9,11 +9,14 @@
9
9
  @printer = XmlPrinter.new(interface)
10
10
  @line = nil
11
11
  @file = nil
12
+ @last_breakpoint = nil
12
13
  end
13
14
 
14
15
  def at_breakpoint(context, breakpoint)
15
- n = Debugger.breakpoints.index(breakpoint) + 1
16
- @printer.print_breakpoint n, breakpoint
16
+ raise "@last_breakpoint supposed to be nil. is #{@last_breakpoint}" if @last_breakpoint
17
+ # at_breakpoint is immediately followed by #at_line event in
18
+ # ruby-debug-base. So postpone breakpoint printing until #at_line.
19
+ @last_breakpoint = breakpoint
17
20
  end
18
21
 
19
22
  def at_catchpoint(context, excpt)
@@ -26,14 +29,35 @@
26
29
 
27
30
  def at_line(context, file, line)
28
31
  @printer.print_at_line(file, line) if context.nil? || context.stop_reason == :step
29
- @line=line
30
- @file =file
32
+ line_event(context, file, line)
33
+ end
34
+
35
+ def at_return(context, file, line)
36
+ @printer.print_at_line(file, line)
37
+ context.stop_frame = -1
38
+ line_event(context, file, line)
39
+ end
40
+
41
+ def line_event(context, file, line)
42
+ @line = line
43
+ @file = file
31
44
  @context = context
45
+ if @last_breakpoint
46
+ # followed after #at_breakpoint in the same thread. Print breakpoint
47
+ # now when @line, @file and @context are correctly set to prevent race
48
+ # condition with `control thread'.
49
+ n = Debugger.breakpoints.index(@last_breakpoint) + 1
50
+ @printer.print_breakpoint n, @last_breakpoint
51
+ @last_breakpoint = nil
52
+ end
53
+ raise "DebuggerThread are not supposed to be traced (#{context.thread})" if context.thread.is_a?(Debugger::DebugThread)
32
54
  @printer.print_debug("Stopping Thread %s", context.thread.to_s)
33
55
  @printer.print_debug("Threads equal: %s", Thread.current == context.thread)
56
+ # will be resumed by commands like `step', `next', `continue', `finish'
57
+ # from `control thread'
34
58
  Thread.stop
35
59
  @printer.print_debug("Resumed Thread %s", context.thread.to_s)
36
- @line=nil
60
+ @line = nil
37
61
  @file = nil
38
62
  @context = nil
39
63
  end
@@ -41,5 +65,6 @@
41
65
  def at_line?
42
66
  @line
43
67
  end
68
+
44
69
  end
45
- end
70
+ end
@@ -22,5 +22,12 @@ module Debugger
22
22
  end
23
23
  end
24
24
 
25
+ # Return true if code is syntactically correct for Ruby.
26
+ def syntax_valid?(code)
27
+ eval("BEGIN {return true}\n#{code}", nil, "", 0)
28
+ rescue Exception
29
+ false
30
+ end
31
+
25
32
  end
26
33
  end
@@ -15,15 +15,15 @@ module Debugger
15
15
 
16
16
  def process_commands
17
17
  @printer.print_debug("Starting command read loop")
18
- control_cmds = Command.commands.select{|cmd| cmd.control }
19
- state = ControlState.new(@interface, control_cmds)
20
- commands = control_cmds.map{|cmd| cmd.new(state, @printer) }
18
+ ctrl_cmd_classes = Command.commands.select{|cmd| cmd.control}
19
+ state = ControlState.new(@interface)
20
+ ctrl_cmds = ctrl_cmd_classes.map{|cmd| cmd.new(state, @printer)}
21
21
 
22
22
  while input = @interface.read_command
23
23
  # escape % since print_debug might use printf
24
24
  @printer.print_debug "Processing: #{input.gsub('%', '%%')}"
25
25
  catch(:debug_error) do
26
- if cmd = commands.find{|c| c.match(input) }
26
+ if cmd = ctrl_cmds.find{|c| c.match(input) }
27
27
  cmd.execute
28
28
  else
29
29
  process_context_commands(input)
@@ -33,35 +33,33 @@ module Debugger
33
33
  rescue IOError, Errno::EPIPE
34
34
  rescue Exception
35
35
  @printer.print_error "INTERNAL ERROR!!! #{$!}\n" rescue nil
36
- @printer.print_error $!.backtrace.map{|l| "\t#{l}"}.join("\n") rescue nil
36
+ @printer.print_error $!.backtrace.map{|l| "\t#{l}"}.join("\n") rescue nil
37
37
  ensure
38
38
  @interface.close
39
39
  end
40
40
 
41
41
  def process_context_commands(input)
42
42
  unless Debugger.event_processor.at_line?
43
- @printer.print_error "There is no thread suspended at the time and therefore no context to execute '#{input.gsub('%', '%%')}'"
43
+ @printer.print_error "There is no thread suspended at the time and therefore no context to execute '#{input.gsub('%', '%%')}'"
44
44
  return
45
45
  end
46
46
  context = Debugger.event_processor.context
47
47
  file = Debugger.event_processor.file
48
- line = Debugger.event_processor.line
49
- event_cmds = Command.commands.select{|cmd| cmd.event }
48
+ line = Debugger.event_processor.line
49
+ event_cmds_classes = Command.commands.select{|cmd| cmd.event}
50
50
  state = State.new do |s|
51
51
  s.context = context
52
52
  s.file = file
53
53
  s.line = line
54
54
  s.binding = context.frame_binding(0)
55
55
  s.interface = @interface
56
- s.commands = event_cmds
57
56
  end
58
- commands = event_cmds.map{|cmd| cmd.new(state, @printer) }
57
+ event_cmds = event_cmds_classes.map{|cmd| cmd.new(state, @printer) }
59
58
  catch(:debug_error) do
60
-
61
59
  splitter[input].each do |input|
62
60
  # escape % since print_debug might use printf
63
61
  @printer.print_debug "Processing context: #{input.gsub('%', '%%')}"
64
- if cmd = commands.find{ |c| c.match(input) }
62
+ if cmd = event_cmds.find{ |c| c.match(input) }
65
63
  if context.dead? && cmd.class.need_context
66
64
  @printer.print_msg "Command is unavailable\n"
67
65
  else
@@ -93,11 +91,13 @@ module Debugger
93
91
  end
94
92
  end
95
93
  end
96
- end
94
+ end
95
+
97
96
  class State # :nodoc:
97
+
98
98
  attr_accessor :context, :file, :line, :binding
99
99
  attr_accessor :frame_pos, :previous_line
100
- attr_accessor :interface, :commands
100
+ attr_accessor :interface
101
101
 
102
102
  def initialize
103
103
  @frame_pos = 0
@@ -120,10 +120,9 @@ module Debugger
120
120
  end
121
121
 
122
122
  class ControlState # :nodoc:
123
- attr_reader :commands
124
- def initialize(interface, commands)
123
+
124
+ def initialize(interface)
125
125
  @interface = interface
126
- @commands = commands
127
126
  end
128
127
 
129
128
  def proceed
@@ -0,0 +1,260 @@
1
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
2
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
3
+ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
4
+ !_TAG_PROGRAM_NAME Exuberant Ctags //
5
+ !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
6
+ !_TAG_PROGRAM_VERSION 5.7 //
7
+ AddBreakpoint commands/breakpoints.rb /^ class AddBreakpoint < Command # :nodoc:$/;" c class:Debugger
8
+ BreakpointsCommand commands/breakpoints.rb /^ class BreakpointsCommand < Command # :nodoc:$/;" c
9
+ CatchCommand commands/catchpoint.rb /^ class CatchCommand < Command # :nodoc:$/;" c class:Debugger
10
+ Command command.rb /^ class Command # :nodoc:$/;" c class:Debugger
11
+ ConditionCommand commands/condition.rb /^ class ConditionCommand < Command # :nodoc:$/;" c class:Debugger
12
+ ContinueCommand commands/stepping.rb /^ class ContinueCommand < Command # :nodoc:$/;" c
13
+ ControlCommandProcessor processor.rb /^ class ControlCommandProcessor # :nodoc:$/;" c class:Debugger
14
+ ControlState processor.rb /^ class ControlState # :nodoc:$/;" c class:Debugger
15
+ Debugger command.rb /^module Debugger$/;" m
16
+ Debugger commands/breakpoints.rb /^module Debugger$/;" m
17
+ Debugger commands/catchpoint.rb /^module Debugger$/;" m
18
+ Debugger commands/condition.rb /^module Debugger$/;" m
19
+ Debugger commands/control.rb /^module Debugger$/;" m
20
+ Debugger commands/eval.rb /^module Debugger$/;" m
21
+ Debugger commands/frame.rb /^module Debugger$/;" m
22
+ Debugger commands/inspect.rb /^module Debugger$/;" m
23
+ Debugger commands/load.rb /^module Debugger$/;" m
24
+ Debugger commands/stepping.rb /^module Debugger$/;" m
25
+ Debugger commands/threads.rb /^module Debugger$/;" m
26
+ Debugger commands/variables.rb /^module Debugger$/;" m
27
+ Debugger event_processor.rb /^ module Debugger$/;" m
28
+ Debugger helper.rb /^module Debugger$/;" m
29
+ Debugger interface.rb /^module Debugger $/;" m
30
+ Debugger processor.rb /^module Debugger$/;" m
31
+ Debugger xml_printer.rb /^module Debugger$/;" m
32
+ DeleteBreakpointCommand commands/breakpoints.rb /^ class DeleteBreakpointCommand < Command # :nodoc:$/;" c
33
+ DownCommand commands/frame.rb /^ class DownCommand < Command # :nodoc:$/;" c
34
+ EvalCommand commands/eval.rb /^ class EvalCommand < Command # :nodoc:$/;" c class:Debugger
35
+ EventProcessor event_processor.rb /^ class EventProcessor$/;" c class:Debugger
36
+ FinishCommand commands/stepping.rb /^ class FinishCommand < Command # :nodoc:$/;" c
37
+ FrameCommand commands/frame.rb /^ class FrameCommand < Command # :nodoc:$/;" c
38
+ FrameFunctions commands/frame.rb /^ module FrameFunctions # :nodoc:$/;" m class:Debugger
39
+ InspectCommand commands/inspect.rb /^ class InspectCommand < Command$/;" c class:Debugger
40
+ InterruptCommand commands/control.rb /^ class InterruptCommand < Command # :nodoc:$/;" c
41
+ LoadCommand commands/load.rb /^ class LoadCommand < Command $/;" c class:Debugger
42
+ NextCommand commands/stepping.rb /^ class NextCommand < Command # :nodoc:$/;" c class:Debugger
43
+ PPCommand commands/eval.rb /^ class PPCommand < Command # :nodoc:$/;" c
44
+ ParseFunctions helper.rb /^ module ParseFunctions$/;" m class:Debugger
45
+ QuitCommand commands/control.rb /^ class QuitCommand < Command # :nodoc:$/;" c class:Debugger
46
+ RemoteInterface interface.rb /^ class RemoteInterface # :nodoc:$/;" c class:Debugger
47
+ RestartCommand commands/control.rb /^ class RestartCommand < Command # :nodoc:$/;" c
48
+ StartCommand commands/control.rb /^ class StartCommand < Command # :nodoc:$/;" c
49
+ State processor.rb /^ class State # :nodoc:$/;" c class:Debugger
50
+ StepCommand commands/stepping.rb /^ class StepCommand < Command # :nodoc:$/;" c
51
+ TCPSocket interface.rb /^class TCPSocket$/;" c
52
+ ThreadCurrentCommand commands/threads.rb /^ class ThreadCurrentCommand < Command # :nodoc:$/;" c
53
+ ThreadListCommand commands/threads.rb /^ class ThreadListCommand < Command # :nodoc:$/;" c class:Debugger
54
+ ThreadResumeCommand commands/threads.rb /^ class ThreadResumeCommand < Command # :nodoc:$/;" c
55
+ ThreadStopCommand commands/threads.rb /^ class ThreadStopCommand < Command # :nodoc:$/;" c
56
+ ThreadSwitchCommand commands/threads.rb /^ class ThreadSwitchCommand < Command # :nodoc:$/;" c
57
+ UpCommand commands/frame.rb /^ class UpCommand < Command # :nodoc:$/;" c
58
+ VarConstantCommand commands/variables.rb /^ class VarConstantCommand < Command # :nodoc:$/;" c class:Debugger
59
+ VarGlobalCommand commands/variables.rb /^ class VarGlobalCommand < Command # :nodoc:$/;" c
60
+ VarInstanceCommand commands/variables.rb /^ class VarInstanceCommand < Command # :nodoc:$/;" c
61
+ VarLocalCommand commands/variables.rb /^ class VarLocalCommand < Command # :nodoc:$/;" c
62
+ WhereCommand commands/frame.rb /^ class WhereCommand < Command # :nodoc:$/;" c class:Debugger
63
+ XmlPrinter xml_printer.rb /^ class XmlPrinter # :nodoc:$/;" c class:Debugger
64
+ adjust_frame commands/frame.rb /^ def adjust_frame(frame_pos, absolute)$/;" f class:Debugger.FrameFunctions
65
+ at_breakpoint event_processor.rb /^ def at_breakpoint(context, breakpoint)$/;" f class:Debugger.EventProcessor
66
+ at_catchpoint event_processor.rb /^ def at_catchpoint(context, excpt)$/;" f class:Debugger.EventProcessor
67
+ at_line event_processor.rb /^ def at_line(context, file, line)$/;" f class:Debugger.EventProcessor
68
+ at_line? event_processor.rb /^ def at_line?$/;" f class:Debugger.EventProcessor
69
+ at_return event_processor.rb /^ def at_return(context, file, line)$/;" f class:Debugger.EventProcessor
70
+ at_tracing event_processor.rb /^ def at_tracing(context, file, line)$/;" f class:Debugger.EventProcessor
71
+ clear_references commands/inspect.rb /^ def self.clear_references$/;" F class:Debugger.InspectCommand
72
+ close interface.rb /^ def close$/;" f class:Debugger.RemoteInterface
73
+ commands command.rb /^ def commands$/;" f class:Debugger.Command
74
+ context processor.rb /^ def context$/;" f class:Debugger.ControlState
75
+ debug_eval command.rb /^ def debug_eval(str, b = get_binding)$/;" f class:Debugger
76
+ debug_silent_eval command.rb /^ def debug_silent_eval(str)$/;" f class:Debugger
77
+ errmsg command.rb /^ def errmsg(*args)$/;" f class:Debugger
78
+ execute commands/breakpoints.rb /^ def execute$/;" f class:BreakpointsCommand
79
+ execute commands/breakpoints.rb /^ def execute$/;" f class:Debugger.AddBreakpoint
80
+ execute commands/breakpoints.rb /^ def execute$/;" f class:DeleteBreakpointCommand
81
+ execute commands/catchpoint.rb /^ def execute$/;" f class:Debugger.CatchCommand
82
+ execute commands/condition.rb /^ def execute$/;" f class:Debugger.ConditionCommand
83
+ execute commands/control.rb /^ def execute$/;" f class:Debugger.QuitCommand
84
+ execute commands/control.rb /^ def execute$/;" f class:InterruptCommand
85
+ execute commands/control.rb /^ def execute$/;" f class:RestartCommand
86
+ execute commands/control.rb /^ def execute$/;" f class:StartCommand
87
+ execute commands/eval.rb /^ def execute$/;" f class:Debugger.EvalCommand
88
+ execute commands/eval.rb /^ def execute$/;" f class:PPCommand
89
+ execute commands/frame.rb /^ def execute$/;" f class:Debugger.WhereCommand
90
+ execute commands/frame.rb /^ def execute$/;" f class:DownCommand
91
+ execute commands/frame.rb /^ def execute$/;" f class:FrameCommand
92
+ execute commands/frame.rb /^ def execute$/;" f class:UpCommand
93
+ execute commands/inspect.rb /^ def execute$/;" f class:Debugger.InspectCommand
94
+ execute commands/load.rb /^ def execute$/;" f class:Debugger.LoadCommand
95
+ execute commands/stepping.rb /^ def execute$/;" f class:ContinueCommand
96
+ execute commands/stepping.rb /^ def execute$/;" f class:Debugger.NextCommand
97
+ execute commands/stepping.rb /^ def execute$/;" f class:FinishCommand
98
+ execute commands/stepping.rb /^ def execute$/;" f class:StepCommand
99
+ execute commands/threads.rb /^ def execute$/;" f class:Debugger.ThreadListCommand
100
+ execute commands/threads.rb /^ def execute$/;" f class:ThreadCurrentCommand
101
+ execute commands/threads.rb /^ def execute$/;" f class:ThreadResumeCommand
102
+ execute commands/threads.rb /^ def execute$/;" f class:ThreadStopCommand
103
+ execute commands/threads.rb /^ def execute$/;" f class:ThreadSwitchCommand
104
+ execute commands/variables.rb /^ def execute$/;" f class:Debugger.VarConstantCommand
105
+ execute commands/variables.rb /^ def execute$/;" f class:VarGlobalCommand
106
+ execute commands/variables.rb /^ def execute$/;" f class:VarInstanceCommand
107
+ execute commands/variables.rb /^ def execute$/;" f class:VarLocalCommand
108
+ file processor.rb /^ def file$/;" f class:Debugger.ControlState
109
+ get_binding command.rb /^ def get_binding$/;" f class:Debugger
110
+ get_context command.rb /^ def get_context(thnum)$/;" f class:Debugger
111
+ get_int helper.rb /^ def get_int(str, cmd, min=nil, max=nil, default=1)$/;" f class:Debugger.ParseFunctions
112
+ hbinding command.rb /^ def hbinding(hash)$/;" f class:Debugger
113
+ help commands/breakpoints.rb /^ def help(cmd)$/;" f class:BreakpointsCommand
114
+ help commands/breakpoints.rb /^ def help(cmd)$/;" f class:Debugger.AddBreakpoint
115
+ help commands/breakpoints.rb /^ def help(cmd)$/;" f class:DeleteBreakpointCommand
116
+ help commands/catchpoint.rb /^ def help(cmd)$/;" f class:Debugger.CatchCommand
117
+ help commands/condition.rb /^ def help(cmd)$/;" f class:Debugger.ConditionCommand
118
+ help commands/control.rb /^ def help(cmd)$/;" f class:Debugger.QuitCommand
119
+ help commands/control.rb /^ def help(cmd)$/;" f class:InterruptCommand
120
+ help commands/control.rb /^ def help(cmd)$/;" f class:RestartCommand
121
+ help commands/control.rb /^ def help(cmd)$/;" f class:StartCommand
122
+ help commands/eval.rb /^ def help(cmd)$/;" f class:Debugger.EvalCommand
123
+ help commands/eval.rb /^ def help(cmd)$/;" f class:PPCommand
124
+ help commands/frame.rb /^ def help(cmd)$/;" f class:Debugger.WhereCommand
125
+ help commands/frame.rb /^ def help(cmd)$/;" f class:DownCommand
126
+ help commands/frame.rb /^ def help(cmd)$/;" f class:FrameCommand
127
+ help commands/frame.rb /^ def help(cmd)$/;" f class:UpCommand
128
+ help commands/stepping.rb /^ def help(cmd)$/;" f class:ContinueCommand
129
+ help commands/stepping.rb /^ def help(cmd)$/;" f class:Debugger.NextCommand
130
+ help commands/stepping.rb /^ def help(cmd)$/;" f class:FinishCommand
131
+ help commands/stepping.rb /^ def help(cmd)$/;" f class:StepCommand
132
+ help commands/threads.rb /^ def help(cmd)$/;" f class:Debugger.ThreadListCommand
133
+ help commands/threads.rb /^ def help(cmd)$/;" f class:ThreadCurrentCommand
134
+ help commands/threads.rb /^ def help(cmd)$/;" f class:ThreadResumeCommand
135
+ help commands/threads.rb /^ def help(cmd)$/;" f class:ThreadStopCommand
136
+ help commands/threads.rb /^ def help(cmd)$/;" f class:ThreadSwitchCommand
137
+ help commands/variables.rb /^ def help(cmd)$/;" f
138
+ help commands/variables.rb /^ def help(cmd)$/;" f class:Debugger
139
+ help commands/variables.rb /^ def help(cmd)$/;" f class:VarGlobalCommand
140
+ help commands/variables.rb /^ def help(cmd)$/;" f class:VarLocalCommand
141
+ help_command commands/breakpoints.rb /^ def help_command$/;" f class:BreakpointsCommand
142
+ help_command commands/breakpoints.rb /^ def help_command$/;" f class:Debugger.AddBreakpoint
143
+ help_command commands/breakpoints.rb /^ def help_command$/;" f class:DeleteBreakpointCommand
144
+ help_command commands/catchpoint.rb /^ def help_command$/;" f class:Debugger.CatchCommand
145
+ help_command commands/condition.rb /^ def help_command$/;" f class:Debugger.ConditionCommand
146
+ help_command commands/control.rb /^ def help_command$/;" f class:Debugger.QuitCommand
147
+ help_command commands/control.rb /^ def help_command$/;" f class:InterruptCommand
148
+ help_command commands/control.rb /^ def help_command$/;" f class:RestartCommand
149
+ help_command commands/control.rb /^ def help_command$/;" f class:StartCommand
150
+ help_command commands/eval.rb /^ def help_command$/;" f class:Debugger.EvalCommand
151
+ help_command commands/eval.rb /^ def help_command$/;" f class:PPCommand
152
+ help_command commands/frame.rb /^ def help_command$/;" f class:Debugger.WhereCommand
153
+ help_command commands/frame.rb /^ def help_command$/;" f class:DownCommand
154
+ help_command commands/frame.rb /^ def help_command$/;" f class:FrameCommand
155
+ help_command commands/frame.rb /^ def help_command$/;" f class:UpCommand
156
+ help_command commands/stepping.rb /^ def help_command$/;" f class:ContinueCommand
157
+ help_command commands/stepping.rb /^ def help_command$/;" f class:Debugger.NextCommand
158
+ help_command commands/stepping.rb /^ def help_command$/;" f class:FinishCommand
159
+ help_command commands/stepping.rb /^ def help_command$/;" f class:StepCommand
160
+ help_command commands/threads.rb /^ def help_command$/;" f class:Debugger.ThreadListCommand
161
+ help_command commands/threads.rb /^ def help_command$/;" f class:ThreadCurrentCommand
162
+ help_command commands/threads.rb /^ def help_command$/;" f class:ThreadResumeCommand
163
+ help_command commands/threads.rb /^ def help_command$/;" f class:ThreadStopCommand
164
+ help_command commands/threads.rb /^ def help_command$/;" f class:ThreadSwitchCommand
165
+ help_command commands/variables.rb /^ def help_command$/;" f
166
+ help_command commands/variables.rb /^ def help_command$/;" f class:Debugger
167
+ help_command commands/variables.rb /^ def help_command$/;" f class:VarGlobalCommand
168
+ help_command commands/variables.rb /^ def help_command$/;" f class:VarLocalCommand
169
+ inherited command.rb /^ def inherited(klass)$/;" f class:Debugger.Command
170
+ initialize command.rb /^ def initialize(state, printer)$/;" f class:Debugger
171
+ initialize event_processor.rb /^ def initialize(interface)$/;" f class:Debugger.EventProcessor
172
+ initialize interface.rb /^ def initialize(socket)$/;" f class:Debugger.RemoteInterface
173
+ initialize processor.rb /^ def initialize$/;" f class:Debugger.State
174
+ initialize processor.rb /^ def initialize(interface)$/;" f class:Debugger.ControlCommandProcessor
175
+ initialize processor.rb /^ def initialize(interface)$/;" f class:Debugger.ControlState
176
+ initialize xml_printer.rb /^ def initialize(interface)$/;" f class:Debugger.XmlPrinter
177
+ line_at command.rb /^ def line_at(file, line)$/;" f class:Debugger
178
+ line_event event_processor.rb /^ def line_event(context, file, line)$/;" f class:Debugger.EventProcessor
179
+ load_commands command.rb /^ def load_commands$/;" f class:Debugger.Command
180
+ match command.rb /^ def match(input)$/;" f class:Debugger
181
+ match commands/eval.rb /^ def match(input)$/;" f class:Debugger.EvalCommand
182
+ method_missing command.rb /^ def method_missing(meth, *args, &block)$/;" f class:Debugger.Command
183
+ method_missing command.rb /^ def method_missing(meth, *args, &block)$/;" f class:Debugger
184
+ non_blocking_gets interface.rb /^ def non_blocking_gets$/;" f class:TCPSocket
185
+ options command.rb /^ def options$/;" f class:Debugger.Command
186
+ print command.rb /^ def print(*args)$/;" f class:Debugger
187
+ print interface.rb /^ def print(*args)$/;" f class:Debugger.RemoteInterface
188
+ print processor.rb /^ def print(*args)$/;" f class:Debugger.ControlCommandProcessor
189
+ print processor.rb /^ def print(*args)$/;" f class:Debugger.ControlState
190
+ print processor.rb /^ def print(*args)$/;" f class:Debugger.State
191
+ print xml_printer.rb /^ def print(*params)$/;" f
192
+ print_array xml_printer.rb /^ def print_array(array)$/;" f
193
+ print_at_line xml_printer.rb /^ def print_at_line(file, line)$/;" f
194
+ print_breakpoint xml_printer.rb /^ def print_breakpoint(n, breakpoint)$/;" f
195
+ print_breakpoint_added xml_printer.rb /^ def print_breakpoint_added(b)$/;" f
196
+ print_breakpoint_deleted xml_printer.rb /^ def print_breakpoint_deleted(b)$/;" f
197
+ print_breakpoints xml_printer.rb /^ def print_breakpoints(breakpoints)$/;" f
198
+ print_catchpoint xml_printer.rb /^ def print_catchpoint(exception)$/;" f
199
+ print_contdition_set xml_printer.rb /^ def print_contdition_set(bp_id)$/;" f
200
+ print_context xml_printer.rb /^ def print_context(context)$/;" f
201
+ print_contexts xml_printer.rb /^ def print_contexts(contexts)$/;" f
202
+ print_current_frame xml_printer.rb /^ def print_current_frame(context, frame_pos)$/;" f
203
+ print_debug xml_printer.rb /^ def print_debug(*args)$/;" f class:Debugger
204
+ print_element xml_printer.rb /^ def print_element(name)$/;" f
205
+ print_error xml_printer.rb /^ def print_error(*args)$/;" f class:Debugger.XmlPrinter
206
+ print_eval xml_printer.rb /^ def print_eval(exp, value)$/;" f
207
+ print_exception xml_printer.rb /^ def print_exception(exception, binding)$/;" f
208
+ print_expression xml_printer.rb /^ def print_expression(exp, value, idx)$/;" f
209
+ print_expressions xml_printer.rb /^ def print_expressions(exps)$/;" f
210
+ print_frame xml_printer.rb /^ def print_frame(context, idx, cur_idx)$/;" f
211
+ print_frames xml_printer.rb /^ def print_frames(context, cur_idx)$/;" f class:Debugger
212
+ print_hash xml_printer.rb /^ def print_hash(hash)$/;" f
213
+ print_inspect xml_printer.rb /^ def print_inspect(eval_result)$/;" f
214
+ print_list xml_printer.rb /^ def print_list(b, e, file, line)$/;" f
215
+ print_load_result xml_printer.rb /^ def print_load_result(file, exception=nil)$/;" f
216
+ print_methods xml_printer.rb /^ def print_methods(methods)$/;" f
217
+ print_msg xml_printer.rb /^ def print_msg(*args)$/;" f class:Debugger.XmlPrinter
218
+ print_pp xml_printer.rb /^ def print_pp(exp, value)$/;" f
219
+ print_trace xml_printer.rb /^ def print_trace(context, file, line)$/;" f
220
+ print_variable xml_printer.rb /^ def print_variable(name, value, kind)$/;" f
221
+ print_variables xml_printer.rb /^ def print_variables(vars, kind)$/;" f
222
+ proceed processor.rb /^ def proceed$/;" f class:Debugger.ControlState
223
+ proceed processor.rb /^ def proceed$/;" f class:Debugger.State
224
+ proceed? processor.rb /^ def proceed?$/;" f class:Debugger.State
225
+ process_commands processor.rb /^ def process_commands$/;" f class:Debugger.ControlCommandProcessor
226
+ process_context_commands processor.rb /^ def process_context_commands(input)$/;" f class:Debugger.ControlCommandProcessor
227
+ read_command interface.rb /^ def read_command$/;" f class:Debugger.RemoteInterface
228
+ reference_result commands/inspect.rb /^ def self.reference_result(result)$/;" F class:Debugger.InspectCommand
229
+ regexp commands/breakpoints.rb /^ def regexp$/;" f class:BreakpointsCommand
230
+ regexp commands/breakpoints.rb /^ def regexp$/;" f class:Debugger.AddBreakpoint
231
+ regexp commands/breakpoints.rb /^ def regexp$/;" f class:DeleteBreakpointCommand
232
+ regexp commands/catchpoint.rb /^ def regexp$/;" f class:Debugger.CatchCommand
233
+ regexp commands/condition.rb /^ def regexp$/;" f class:Debugger.ConditionCommand
234
+ regexp commands/control.rb /^ def regexp$/;" f class:Debugger.QuitCommand
235
+ regexp commands/control.rb /^ def regexp$/;" f class:InterruptCommand
236
+ regexp commands/control.rb /^ def regexp$/;" f class:RestartCommand
237
+ regexp commands/control.rb /^ def regexp$/;" f class:StartCommand
238
+ regexp commands/eval.rb /^ def regexp$/;" f class:Debugger.EvalCommand
239
+ regexp commands/eval.rb /^ def regexp$/;" f class:PPCommand
240
+ regexp commands/frame.rb /^ def regexp$/;" f class:Debugger.WhereCommand
241
+ regexp commands/frame.rb /^ def regexp$/;" f class:DownCommand
242
+ regexp commands/frame.rb /^ def regexp$/;" f class:FrameCommand
243
+ regexp commands/frame.rb /^ def regexp$/;" f class:UpCommand
244
+ regexp commands/inspect.rb /^ def regexp$/;" f class:Debugger.InspectCommand
245
+ regexp commands/load.rb /^ def regexp$/;" f class:Debugger.LoadCommand
246
+ regexp commands/stepping.rb /^ def regexp$/;" f class:ContinueCommand
247
+ regexp commands/stepping.rb /^ def regexp$/;" f class:Debugger.NextCommand
248
+ regexp commands/stepping.rb /^ def regexp$/;" f class:FinishCommand
249
+ regexp commands/stepping.rb /^ def regexp$/;" f class:StepCommand
250
+ regexp commands/threads.rb /^ def regexp$/;" f class:Debugger.ThreadListCommand
251
+ regexp commands/threads.rb /^ def regexp$/;" f class:ThreadCurrentCommand
252
+ regexp commands/threads.rb /^ def regexp$/;" f class:ThreadResumeCommand
253
+ regexp commands/threads.rb /^ def regexp$/;" f class:ThreadStopCommand
254
+ regexp commands/threads.rb /^ def regexp$/;" f class:ThreadSwitchCommand
255
+ regexp commands/variables.rb /^ def regexp$/;" f class:Debugger.VarConstantCommand
256
+ regexp commands/variables.rb /^ def regexp$/;" f class:VarGlobalCommand
257
+ regexp commands/variables.rb /^ def regexp$/;" f class:VarInstanceCommand
258
+ regexp commands/variables.rb /^ def regexp$/;" f class:VarLocalCommand
259
+ splitter processor.rb /^ def splitter$/;" f class:Debugger.ControlCommandProcessor
260
+ timeout command.rb /^ def timeout(sec)$/;" f class:Debugger
@@ -136,6 +136,18 @@ module Debugger
136
136
  print "<breakpointDeleted no=\"%s\"/>", b.id
137
137
  end
138
138
 
139
+ def print_breakpoint_enabled(b)
140
+ print "<breakpointEnabled bp_id=\"%s\"/>", b.id
141
+ end
142
+
143
+ def print_breakpoint_disabled(b)
144
+ print "<breakpointDisabled bp_id=\"%s\"/>", b.id
145
+ end
146
+
147
+ def print_contdition_set(bp_id)
148
+ print "<conditionSet bp_id=\"%d\"/>", bp_id
149
+ end
150
+
139
151
  def print_expressions(exps)
140
152
  print_element "expressions" do
141
153
  exps.each_with_index do |(exp, value), idx|
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.1.10
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Barchfeld, Martin Krauskopf
@@ -9,7 +9,7 @@ autorequire: ruby-debug-base
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-04 00:00:00 +01:00
12
+ date: 2008-06-17 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - "="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.10.0
22
+ version: 0.10.1
23
23
  version:
24
24
  description: An interface which glues ruby-debug to IDEs like Eclipse (RDT) and NetBeans.
25
25
  email: rubyeclipse-dev-list@sourceforge.net
@@ -30,21 +30,24 @@ extensions: []
30
30
  extra_rdoc_files: []
31
31
 
32
32
  files:
33
- - README
34
33
  - bin/rdebug-ide
35
34
  - lib/ruby-debug
35
+ - lib/ruby-debug/tags
36
36
  - lib/ruby-debug/xml_printer.rb
37
37
  - lib/ruby-debug/command.rb
38
38
  - lib/ruby-debug/processor.rb
39
39
  - lib/ruby-debug/commands
40
40
  - lib/ruby-debug/commands/load.rb
41
41
  - lib/ruby-debug/commands/breakpoints.rb
42
+ - lib/ruby-debug/commands/tags
42
43
  - lib/ruby-debug/commands/variables.rb
43
44
  - lib/ruby-debug/commands/control.rb
45
+ - lib/ruby-debug/commands/enable.rb
44
46
  - lib/ruby-debug/commands/threads.rb
45
47
  - lib/ruby-debug/commands/stepping.rb
46
48
  - lib/ruby-debug/commands/eval.rb
47
49
  - lib/ruby-debug/commands/catchpoint.rb
50
+ - lib/ruby-debug/commands/condition.rb
48
51
  - lib/ruby-debug/commands/frame.rb
49
52
  - lib/ruby-debug/commands/inspect.rb
50
53
  - lib/ruby-debug/interface.rb
@@ -74,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
77
  requirements: []
75
78
 
76
79
  rubyforge_project: debug-commons
77
- rubygems_version: 1.0.1
80
+ rubygems_version: 1.1.1
78
81
  signing_key:
79
82
  specification_version: 2
80
83
  summary: IDE interface for ruby-debug.
data/README DELETED
File without changes