debug 1.0.0.rc2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +24 -0
- data/.github/ISSUE_TEMPLATE/custom.md +10 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- data/README.md +26 -14
- data/Rakefile +1 -1
- data/TODO.md +4 -8
- data/debug.gemspec +1 -1
- data/exe/rdbg +1 -1
- data/ext/debug/debug.c +5 -0
- data/lib/debug/breakpoint.rb +14 -5
- data/lib/debug/color.rb +25 -3
- data/lib/debug/config.rb +18 -3
- data/lib/debug/console.rb +10 -2
- data/lib/debug/frame_info.rb +2 -2
- data/lib/debug/local.rb +21 -24
- data/lib/debug/server.rb +8 -7
- data/lib/debug/server_dap.rb +30 -19
- data/lib/debug/session.rb +260 -101
- data/lib/debug/thread_client.rb +23 -14
- data/lib/debug/tracer.rb +8 -3
- data/lib/debug/version.rb +1 -1
- data/misc/README.md.erb +18 -11
- metadata +9 -6
data/lib/debug/server_dap.rb
CHANGED
|
@@ -153,8 +153,8 @@ module DEBUGGER__
|
|
|
153
153
|
when 'setFunctionBreakpoints'
|
|
154
154
|
send_response req
|
|
155
155
|
when 'setExceptionBreakpoints'
|
|
156
|
-
|
|
157
|
-
case
|
|
156
|
+
process_filter = ->(filter_id) {
|
|
157
|
+
case filter_id
|
|
158
158
|
when 'any'
|
|
159
159
|
bp = SESSION.add_catch_breakpoint 'Exception'
|
|
160
160
|
when 'RuntimeError'
|
|
@@ -163,17 +163,26 @@ module DEBUGGER__
|
|
|
163
163
|
bp = nil
|
|
164
164
|
end
|
|
165
165
|
{
|
|
166
|
-
|
|
166
|
+
verified: bp ? true : false,
|
|
167
167
|
message: bp.inspect,
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
+
|
|
171
|
+
filters = args.fetch('filters').map {|filter_id|
|
|
172
|
+
process_filter.call(filter_id)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
filters += args.fetch('filterOptions', {}).map{|bp_info|
|
|
176
|
+
process_filter.call(bp_info.dig('filterId'))
|
|
177
|
+
}
|
|
178
|
+
|
|
170
179
|
send_response req, breakpoints: filters
|
|
171
180
|
when 'configurationDone'
|
|
172
181
|
send_response req
|
|
173
182
|
@q_msg << 'continue'
|
|
174
183
|
when 'attach'
|
|
175
184
|
send_response req
|
|
176
|
-
Process.kill(:
|
|
185
|
+
Process.kill(:SIGURG, Process.pid)
|
|
177
186
|
when 'disconnect'
|
|
178
187
|
send_response req
|
|
179
188
|
@q_msg << 'continue'
|
|
@@ -196,7 +205,7 @@ module DEBUGGER__
|
|
|
196
205
|
exit
|
|
197
206
|
when 'pause'
|
|
198
207
|
send_response req
|
|
199
|
-
Process.kill(:
|
|
208
|
+
Process.kill(:SIGURG, Process.pid)
|
|
200
209
|
when 'reverseContinue'
|
|
201
210
|
send_response req,
|
|
202
211
|
success: false, message: 'cancelled',
|
|
@@ -247,7 +256,7 @@ module DEBUGGER__
|
|
|
247
256
|
def event type, *args
|
|
248
257
|
case type
|
|
249
258
|
when :suspend_bp
|
|
250
|
-
_i, bp = *args
|
|
259
|
+
_i, bp, tid = *args
|
|
251
260
|
if bp.kind_of?(CatchBreakpoint)
|
|
252
261
|
reason = 'exception'
|
|
253
262
|
text = bp.description
|
|
@@ -259,24 +268,26 @@ module DEBUGGER__
|
|
|
259
268
|
send_event 'stopped', reason: reason,
|
|
260
269
|
description: text,
|
|
261
270
|
text: text,
|
|
262
|
-
threadId:
|
|
271
|
+
threadId: tid,
|
|
263
272
|
allThreadsStopped: true
|
|
264
273
|
when :suspend_trap
|
|
274
|
+
_sig, tid = *args
|
|
265
275
|
send_event 'stopped', reason: 'pause',
|
|
266
|
-
threadId:
|
|
276
|
+
threadId: tid,
|
|
267
277
|
allThreadsStopped: true
|
|
268
278
|
when :suspended
|
|
279
|
+
tid, = *args
|
|
269
280
|
send_event 'stopped', reason: 'step',
|
|
270
|
-
threadId:
|
|
281
|
+
threadId: tid,
|
|
271
282
|
allThreadsStopped: true
|
|
272
283
|
end
|
|
273
284
|
end
|
|
274
285
|
end
|
|
275
286
|
|
|
276
287
|
class Session
|
|
277
|
-
def
|
|
288
|
+
def find_waiting_tc id
|
|
278
289
|
@th_clients.each{|th, tc|
|
|
279
|
-
return tc if tc.id == id
|
|
290
|
+
return tc if tc.id == id && tc.waiting?
|
|
280
291
|
}
|
|
281
292
|
return nil
|
|
282
293
|
end
|
|
@@ -297,7 +308,7 @@ module DEBUGGER__
|
|
|
297
308
|
|
|
298
309
|
when 'stackTrace'
|
|
299
310
|
tid = req.dig('arguments', 'threadId')
|
|
300
|
-
if tc =
|
|
311
|
+
if tc = find_waiting_tc(tid)
|
|
301
312
|
tc << [:dap, :backtrace, req]
|
|
302
313
|
else
|
|
303
314
|
fail_response req
|
|
@@ -306,7 +317,7 @@ module DEBUGGER__
|
|
|
306
317
|
frame_id = req.dig('arguments', 'frameId')
|
|
307
318
|
if @frame_map[frame_id]
|
|
308
319
|
tid, fid = @frame_map[frame_id]
|
|
309
|
-
if tc =
|
|
320
|
+
if tc = find_waiting_tc(tid)
|
|
310
321
|
tc << [:dap, :scopes, req, fid]
|
|
311
322
|
else
|
|
312
323
|
fail_response req
|
|
@@ -339,7 +350,7 @@ module DEBUGGER__
|
|
|
339
350
|
frame_id = ref[1]
|
|
340
351
|
tid, fid = @frame_map[frame_id]
|
|
341
352
|
|
|
342
|
-
if tc =
|
|
353
|
+
if tc = find_waiting_tc(tid)
|
|
343
354
|
tc << [:dap, :scope, req, fid]
|
|
344
355
|
else
|
|
345
356
|
fail_response req
|
|
@@ -348,13 +359,13 @@ module DEBUGGER__
|
|
|
348
359
|
when :variable
|
|
349
360
|
tid, vid = ref[1], ref[2]
|
|
350
361
|
|
|
351
|
-
if tc =
|
|
362
|
+
if tc = find_waiting_tc(tid)
|
|
352
363
|
tc << [:dap, :variable, req, vid]
|
|
353
364
|
else
|
|
354
365
|
fail_response req
|
|
355
366
|
end
|
|
356
367
|
else
|
|
357
|
-
raise "
|
|
368
|
+
raise "Unknown type: #{ref.inspect}"
|
|
358
369
|
end
|
|
359
370
|
else
|
|
360
371
|
fail_response req
|
|
@@ -364,7 +375,7 @@ module DEBUGGER__
|
|
|
364
375
|
if @frame_map[frame_id]
|
|
365
376
|
tid, fid = @frame_map[frame_id]
|
|
366
377
|
expr = req.dig('arguments', 'expression')
|
|
367
|
-
if tc =
|
|
378
|
+
if tc = find_waiting_tc(tid)
|
|
368
379
|
tc << [:dap, :evaluate, req, fid, expr]
|
|
369
380
|
else
|
|
370
381
|
fail_response req
|
|
@@ -471,7 +482,7 @@ module DEBUGGER__
|
|
|
471
482
|
fid = args.shift
|
|
472
483
|
frame = @target_frames[fid]
|
|
473
484
|
|
|
474
|
-
lnum =
|
|
485
|
+
lnum =
|
|
475
486
|
if frame.binding
|
|
476
487
|
frame.binding.local_variables.size
|
|
477
488
|
elsif vars = frame.local_variables
|
|
@@ -580,7 +591,7 @@ module DEBUGGER__
|
|
|
580
591
|
end
|
|
581
592
|
event! :dap_result, :evaluate, req, tid: self.id, **evaluate_result(result)
|
|
582
593
|
else
|
|
583
|
-
raise "
|
|
594
|
+
raise "Unknown req: #{args.inspect}"
|
|
584
595
|
end
|
|
585
596
|
end
|
|
586
597
|
|