debug 1.3.0 → 1.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: adddd814397fedb45de84db6ccb2dc49c3aefae141e73b156e3b87c29a3edf60
4
- data.tar.gz: 0b0cb92d077f04ed9f7bfa1f79f56f35dc4dc9054f27ea3608d23c5f0d462274
3
+ metadata.gz: 58d7a886dc29b717d9f31ca7859a40a881a251a4c5e64705ac38de1cb94c0f32
4
+ data.tar.gz: a58994d8d302dac0aedd63775b8d81769d326a6bb0746d9953182fa8b36894fd
5
5
  SHA512:
6
- metadata.gz: 3e60eb57c1ec6c164d6956e777f8ac52e15ba84c13b97443650ac67f2b503397cfc57d9f0b897f331946e7200067227d61e7b81f459c5b42e44098dbbe9161ef
7
- data.tar.gz: 3a377c3da4482103142fbece04cb896522f952aa3d43f316f50dd699f35f0c24db100df3e706e6d86cbc752021800bbfdff6131a95023d497741d68c396e5ed7
6
+ metadata.gz: 3988bc3fd10cab3592a9f6b3b816dd2f5cabf5e8e4bceaec646011a1663b037a7f9683008c77d1c91a0a8f984540c16ef5975fa14b93f84b6cca5915e98df440
7
+ data.tar.gz: 4283c41adf172ae2d1e51bb34adfb65ab2b521862bae6be7bd08ba485bea178e0e2ec511db7b9f0297e2aea4e4d2ac249887bb9271f51d71d6beb76a0aee63d0
data/CONTRIBUTING.md CHANGED
@@ -206,17 +206,15 @@ end
206
206
  #### gentest options
207
207
  You can get more information about `gentest` here.
208
208
 
209
- The default method name is `test_foo` and the class name is `FooTest`. The file name will be `[Lowercase letters with "Test" removed from the class name]_test.rb`.
210
- ```shell
211
- # run without any options(test method name will be `test_foo`, class name will be `FooTest`, file name will be `foo_test.rb`)
212
- $ bin/gentest target.rb
213
- # specify the class name(test method name will be `test_foo`, class name will be `StepTest`, file name will be `step_test.rb`)
214
- $ bin/gentest target.rb -c StepTest
215
- # specify the method name(test method name will be `test_step`, class name will be `FooTest`, file name will be `foo_test.rb`)
216
- $ bin/gentest target.rb -m test_step
217
- # specify class name and method name(test method name will be `test_step`, class name will be `StepTest`, file name will be `step_test.rb`.)
218
- $ bin/gentest target.rb -c StepTest -m test_step
219
- ```
209
+ The default method name is `test_#{some integer numbers}`, the class name is `FooTest`, and the file name will be `foo_test.rb`.
210
+ The following table shows examples of the gentest options.
211
+
212
+ | Command | Description | File | Class | Method |
213
+ | --- | --- | --- | --- | --- |
214
+ | `$ bin/gentest target.rb` | Run without any options | `foo_test.rb` | `FooTest` | `test_#{some integer numbers}` |
215
+ | `$ bin/gentest target.rb -c step` | Specify the class name | `step_test.rb` | `StepTest` | `test_#{some integer numbers}` |
216
+ | `$ bin/gentest target.rb -m test_step` | Specify the method name | `foo_test.rb` | `FooTest` | `test_step` |
217
+ | `$ bin/gentest target.rb -c step -m test_step` | Specify the class name and the method name | `step_test.rb` | `StepTest` | `test_step` |
220
218
 
221
219
  ## To Update README
222
220
 
data/README.md CHANGED
@@ -11,7 +11,7 @@ New debug.rb has several advantages:
11
11
  * [Remote debugging](#remote-debugging): Support remote debugging natively.
12
12
  * UNIX domain socket
13
13
  * TCP/IP
14
- * Integeration with rich debugger frontend
14
+ * Integration with rich debugger frontend
15
15
  * VSCode/DAP ([VSCode rdbg Ruby Debugger - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=KoichiSasada.vscode-rdbg))
16
16
  * Chrome DevTools
17
17
  * Extensible: application can introduce debugging support with several ways:
@@ -340,7 +340,7 @@ $ RUBY_DEBUG_PORT=12345 ruby target.rb
340
340
 
341
341
  ### Integration with external debugger frontend
342
342
 
343
- You can attach with external debuger frontend with VSCode and Chrome.
343
+ You can attach with external debugger frontend with VSCode and Chrome.
344
344
 
345
345
  ```
346
346
  $ rdbg --open=[frontend] target.rb
@@ -352,7 +352,7 @@ Also `open` command allows opening the debug port.
352
352
 
353
353
  #### VSCode integration
354
354
 
355
- If you don't run a debuggee Ruby process on VSCode, you can attach with VSCode later with the fowllowing steps.
355
+ If you don't run a debuggee Ruby process on VSCode, you can attach with VSCode later with the following steps.
356
356
 
357
357
  `rdbg --open=vscode` opens the debug port and tries to invoke the VSCode (`code` command).
358
358
 
@@ -364,7 +364,7 @@ Launching: code /tmp/ruby-debug-vscode-20211014-27706-gd7e85/ /tmp/ruby-debug-vs
364
364
  DEBUGGER: Connected.
365
365
  ```
366
366
 
367
- And it tris to invoke the new VSCode window and VSCode starts attaching to the debuggee Ruby program automatically.
367
+ And it tries to invoke the new VSCode window and VSCode starts attaching to the debuggee Ruby program automatically.
368
368
 
369
369
  You can also use `open vscode` command in REPL.
370
370
 
data/ext/debug/debug.c CHANGED
@@ -64,7 +64,7 @@ di_body(const rb_debug_inspector_t *dc, void *ptr)
64
64
 
65
65
  if (!NIL_P(iseq)) {
66
66
  VALUE path = iseq_realpath(iseq);
67
- if (!NIL_P(path) && str_start_with(path, skip_path_prefix)) continue;
67
+ if (!NIL_P(path) && !NIL_P(skip_path_prefix) && str_start_with(path, skip_path_prefix)) continue;
68
68
  }
69
69
 
70
70
  loc = RARRAY_AREF(locs, i);
data/lib/debug/client.rb CHANGED
@@ -91,9 +91,7 @@ module DEBUGGER__
91
91
  @console.readline "(rdbg:remote\##{@pid}) "
92
92
  else
93
93
  @console.readline "(rdbg:remote) "
94
- end.tap{|line|
95
- p readline: line
96
- }
94
+ end
97
95
  end
98
96
 
99
97
  def connect_unix name = nil
data/lib/debug/color.rb CHANGED
@@ -79,7 +79,7 @@ module DEBUGGER__
79
79
  end
80
80
 
81
81
  if defined? IRB::Color.colorize_code
82
- if SUPPORT_COLORABLE_OPTION
82
+ if defined? SUPPORT_COLORABLE_OPTION
83
83
  def colorize_code code
84
84
  IRB::Color.colorize_code(code, colorable: true)
85
85
  end
data/lib/debug/config.rb CHANGED
@@ -371,38 +371,54 @@ module DEBUGGER__
371
371
 
372
372
  ## Unix domain socket configuration
373
373
 
374
- def self.unix_domain_socket_dir
374
+ def self.check_dir_authority path
375
+ fs = File.stat(path)
376
+
377
+ unless (dir_uid = fs.uid) == (uid = Process.uid)
378
+ raise "#{path} uid is #{dir_uid}, but Process.uid is #{uid}"
379
+ end
380
+ unless (dir_mode = fs.mode) == 040700 # 4: dir, 7:rwx
381
+ raise "#{path}'s mode is #{dir_mode.to_s(8)} (should be 040700)"
382
+ end
383
+
384
+ path
385
+ end
386
+
387
+ def self.unix_domain_socket_tmpdir
375
388
  require 'tmpdir'
376
389
 
377
- case
378
- when path = CONFIG[:sock_dir]
379
- when path = ENV['XDG_RUNTIME_DIR']
380
- when tmpdir = Dir.tmpdir
390
+ if tmpdir = Dir.tmpdir
381
391
  path = File.join(tmpdir, "ruby-debug-sock-#{Process.uid}")
382
392
 
383
- if File.exist?(path)
384
- fs = File.stat(path)
385
- unless (dir_uid = fs.uid) == (uid = Process.uid)
386
- raise "#{path} uid is #{dir_uid}, but Process.uid is #{uid}"
387
- end
388
- unless (dir_mode = fs.mode) == 040700 # 4: dir, 7:rwx
389
- raise "#{path}'s mode is #{dir_mode.to_s(8)} (should be 040700)"
390
- end
391
- else
393
+ unless File.exist?(path)
392
394
  d = Dir.mktmpdir
393
395
  File.rename(d, path)
394
396
  end
395
- when home = ENV['HOME']
397
+
398
+ check_dir_authority(path)
399
+ end
400
+ end
401
+
402
+ def self.unix_domain_socket_homedir
403
+ if home = ENV['HOME']
396
404
  path = File.join(home, '.ruby-debug-sock')
397
405
 
398
- case
399
- when !File.exist?(path)
406
+ unless File.exist?(path)
400
407
  Dir.mkdir(path, 0700)
401
- when !File.directory?(path)
402
- raise "#{path} is not a directory."
403
408
  end
409
+
410
+ check_dir_authority(path)
411
+ end
412
+ end
413
+
414
+ def self.unix_domain_socket_dir
415
+ case
416
+ when path = CONFIG[:sock_dir]
417
+ when path = ENV['XDG_RUNTIME_DIR']
418
+ when path = unix_domain_socket_tmpdir
419
+ when path = unix_domain_socket_homedir
404
420
  else
405
- raise 'specify RUBY_DEBUG_SOCK_DIR environment variable for UNIX domain socket directory.'
421
+ raise 'specify RUBY_DEBUG_SOCK_DIR environment variable.'
406
422
  end
407
423
 
408
424
  path
data/lib/debug/local.rb CHANGED
@@ -86,6 +86,24 @@ module DEBUGGER__
86
86
  trap(:INT, prev_handler)
87
87
  end
88
88
  end
89
+
90
+ def after_fork_parent
91
+ parent_pid = Process.pid
92
+
93
+ at_exit{
94
+ SESSION.intercept_trap_sigint_end
95
+ trap(:SIGINT, :IGNORE)
96
+
97
+ if Process.pid == parent_pid
98
+ # only check child process from its parent
99
+ begin
100
+ # wait for all child processes to keep terminal
101
+ loop{ Process.waitpid }
102
+ rescue Errno::ESRCH, Errno::ECHILD
103
+ end
104
+ end
105
+ }
106
+ end
89
107
  end
90
108
  end
91
109
 
data/lib/debug/prelude.rb CHANGED
@@ -40,7 +40,7 @@ module Kernel
40
40
  end
41
41
  end
42
42
 
43
- alias b debugger if ENV['RUBY_DEBUG_B']
43
+ alias bb debugger if ENV['RUBY_DEBUG_BB']
44
44
  end
45
45
 
46
46
  class Binding
data/lib/debug/server.rb CHANGED
@@ -116,6 +116,8 @@ module DEBUGGER__
116
116
 
117
117
  self.extend(UI_CDP)
118
118
  @repl = false
119
+ CONFIG.set_config no_color: true
120
+
119
121
  @web_sock = UI_CDP::WebSocket.new(@sock)
120
122
  @web_sock.handshake
121
123
  else
@@ -306,6 +308,10 @@ module DEBUGGER__
306
308
  s.puts "quit"
307
309
  end
308
310
  end
311
+
312
+ def after_fork_parent
313
+ # do nothing
314
+ end
309
315
  end
310
316
 
311
317
  class UI_TcpServer < UI_ServerBase
@@ -454,14 +460,27 @@ module DEBUGGER__
454
460
  ::DEBUGGER__.warn "Debugger can attach via UNIX domain socket (#{@sock_path})"
455
461
  vscode_setup if CONFIG[:open_frontend] == 'vscode'
456
462
 
457
- Socket.unix_server_loop @sock_path do |sock, client|
458
- @sock_for_fork = sock
459
- @client_addr = client
463
+ begin
464
+ Socket.unix_server_loop @sock_path do |sock, client|
465
+ @sock_for_fork = sock
466
+ @client_addr = client
467
+
468
+ yield sock
469
+ ensure
470
+ sock.close
471
+ @sock_for_fork = nil
472
+ end
473
+ rescue Errno::ECONNREFUSED => _e
474
+ ::DEBUGGER__.warn "#{_e.message} (socket path: #{@sock_path})"
460
475
 
461
- yield sock
462
- ensure
463
- sock.close
464
- @sock_for_fork = nil
476
+ if @sock_path.start_with? Config.unix_domain_socket_tmpdir
477
+ # try on homedir
478
+ @sock_path = Config.create_unix_domain_socket_name(unix_domain_socket_homedir)
479
+ ::DEBUGGER__.warn "retry with #{@sock_path}"
480
+ retry
481
+ else
482
+ raise
483
+ end
465
484
  end
466
485
  end
467
486
  end
@@ -14,9 +14,7 @@ module DEBUGGER__
14
14
  @sock = s
15
15
  end
16
16
 
17
- def handshake
18
- CONFIG.set_config no_color: true
19
-
17
+ def handshake
20
18
  req = @sock.readpartial 4096
21
19
  $stderr.puts '[>]' + req if SHOW_PROTOCOL
22
20
 
@@ -97,10 +95,11 @@ module DEBUGGER__
97
95
  end
98
96
 
99
97
  def process
98
+ bps = []
99
+ @src_map = {}
100
100
  loop do
101
101
  req = @web_sock.extract_data
102
102
  $stderr.puts '[>]' + req.inspect if SHOW_PROTOCOL
103
- bps = []
104
103
 
105
104
  case req['method']
106
105
 
@@ -108,6 +107,7 @@ module DEBUGGER__
108
107
  when 'Page.getResourceTree'
109
108
  abs = File.absolute_path($0)
110
109
  src = File.read(abs)
110
+ @src_map[abs] = src
111
111
  send_response req,
112
112
  frameTree: {
113
113
  frame: {
@@ -124,7 +124,7 @@ module DEBUGGER__
124
124
  url: "http://debuggee#{abs}",
125
125
  startLine: 0,
126
126
  startColumn: 0,
127
- endLine: src.count('\n'),
127
+ endLine: src.count("\n"),
128
128
  endColumn: 0,
129
129
  executionContextId: 1,
130
130
  hash: src.hash
@@ -136,7 +136,7 @@ module DEBUGGER__
136
136
  }
137
137
  when 'Debugger.getScriptSource'
138
138
  s_id = req.dig('params', 'scriptId')
139
- src = File.read(s_id)
139
+ src = get_source_code s_id
140
140
  send_response req, scriptSource: src
141
141
  @q_msg << req
142
142
  when 'Page.startScreencast', 'Emulation.setTouchEmulationEnabled', 'Emulation.setEmitTouchEventsForMouse',
@@ -169,7 +169,10 @@ module DEBUGGER__
169
169
  # breakpoint
170
170
  when 'Debugger.getPossibleBreakpoints'
171
171
  s_id = req.dig('params', 'start', 'scriptId')
172
- line = req.dig('params', 'lineNumber')
172
+ line = req.dig('params', 'start', 'lineNumber')
173
+ src = get_source_code s_id
174
+ end_line = src.count("\n")
175
+ line = end_line if line > end_line
173
176
  send_response req,
174
177
  locations: [
175
178
  { scriptId: s_id,
@@ -180,6 +183,9 @@ module DEBUGGER__
180
183
  line = req.dig('params', 'lineNumber')
181
184
  path = req.dig('params', 'url').match('http://debuggee(.*)')[1]
182
185
  cond = req.dig('params', 'condition')
186
+ src = get_source_code path
187
+ end_line = src.count("\n")
188
+ line = end_line if line > end_line
183
189
  if cond != ''
184
190
  bps << SESSION.add_line_breakpoint(path, line + 1, cond: cond)
185
191
  else
@@ -202,6 +208,14 @@ module DEBUGGER__
202
208
  end
203
209
  end
204
210
 
211
+ def get_source_code path
212
+ return @src_map[path] if @src_map[path]
213
+
214
+ src = File.read(path)
215
+ @src_map[path] = src
216
+ src
217
+ end
218
+
205
219
  ## Called by the SESSION thread
206
220
 
207
221
  def readline prompt
@@ -269,7 +283,7 @@ module DEBUGGER__
269
283
  url: frame[:url],
270
284
  startLine: 0,
271
285
  startColumn: 0,
272
- endLine: src.count('\n'),
286
+ endLine: src.count("\n"),
273
287
  endColumn: 0,
274
288
  executionContextId: @script_paths.size + 1,
275
289
  hash: src.hash
@@ -222,14 +222,35 @@ module DEBUGGER__
222
222
  @q_msg << 'c'
223
223
  send_response req, allThreadsContinued: true
224
224
  when 'next'
225
- @q_msg << 'n'
226
- send_response req
225
+ begin
226
+ @session.check_postmortem
227
+ @q_msg << 'n'
228
+ send_response req
229
+ rescue PostmortemError
230
+ send_response req,
231
+ success: false, message: 'postmortem mode',
232
+ result: "'Next' is not supported while postrmotem mode"
233
+ end
227
234
  when 'stepIn'
228
- @q_msg << 's'
229
- send_response req
235
+ begin
236
+ @session.check_postmortem
237
+ @q_msg << 's'
238
+ send_response req
239
+ rescue PostmortemError
240
+ send_response req,
241
+ success: false, message: 'postmortem mode',
242
+ result: "'stepIn' is not supported while postrmotem mode"
243
+ end
230
244
  when 'stepOut'
231
- @q_msg << 'fin'
232
- send_response req
245
+ begin
246
+ @session.check_postmortem
247
+ @q_msg << 'fin'
248
+ send_response req
249
+ rescue PostmortemError
250
+ send_response req,
251
+ success: false, message: 'postmortem mode',
252
+ result: "'stepOut' is not supported while postrmotem mode"
253
+ end
233
254
  when 'terminate'
234
255
  send_response req
235
256
  exit
@@ -491,7 +512,7 @@ module DEBUGGER__
491
512
  case type
492
513
  when :backtrace
493
514
  event! :dap_result, :backtrace, req, {
494
- stackFrames: @target_frames.map.with_index{|frame, i|
515
+ stackFrames: @target_frames.map{|frame|
495
516
  path = frame.realpath || frame.path
496
517
  ref = frame.file_lines unless path && File.exist?(path)
497
518
 
data/lib/debug/session.rb CHANGED
@@ -91,7 +91,7 @@ module DEBUGGER__
91
91
  # [:check, expr] => CheckBreakpoint
92
92
  #
93
93
  @tracers = {}
94
- @th_clients = nil # {Thread => ThreadClient}
94
+ @th_clients = {} # {Thread => ThreadClient}
95
95
  @q_evt = Queue.new
96
96
  @displays = []
97
97
  @tc = nil
@@ -1358,7 +1358,7 @@ module DEBUGGER__
1358
1358
  end
1359
1359
 
1360
1360
  def setup_threads
1361
- prev_clients = @th_clients || {}
1361
+ prev_clients = @th_clients
1362
1362
  @th_clients = {}
1363
1363
 
1364
1364
  Thread.list.each{|th|
@@ -1555,6 +1555,36 @@ module DEBUGGER__
1555
1555
  @postmortem = false
1556
1556
  end
1557
1557
 
1558
+ def capture_exception_frames *exclude_path
1559
+ postmortem_hook = TracePoint.new(:raise){|tp|
1560
+ exc = tp.raised_exception
1561
+ frames = DEBUGGER__.capture_frames(__dir__)
1562
+
1563
+ exclude_path.each{|ex|
1564
+ if Regexp === ex
1565
+ frames.delete_if{|e| ex =~ e.path}
1566
+ else
1567
+ frames.delete_if{|e| e.path.start_with? ex.to_s}
1568
+ end
1569
+ }
1570
+ exc.instance_variable_set(:@__debugger_postmortem_frames, frames)
1571
+ }
1572
+ postmortem_hook.enable
1573
+
1574
+ begin
1575
+ yield
1576
+ nil
1577
+ rescue Exception => e
1578
+ if e.instance_variable_defined? :@__debugger_postmortem_frames
1579
+ e
1580
+ else
1581
+ raise
1582
+ end
1583
+ ensure
1584
+ postmortem_hook.disable
1585
+ end
1586
+ end
1587
+
1558
1588
  def postmortem=(is_enable)
1559
1589
  if is_enable
1560
1590
  unless @postmortem_hook
@@ -1635,20 +1665,7 @@ module DEBUGGER__
1635
1665
  end
1636
1666
 
1637
1667
  def after_fork_parent
1638
- parent_pid = Process.pid
1639
- at_exit{
1640
- @intercept_trap_sigint = false
1641
- trap(:SIGINT, :IGNORE)
1642
-
1643
- if Process.pid == parent_pid
1644
- # only check child process from its parent
1645
- begin
1646
- # wait for all child processes to keep terminal
1647
- loop{ Process.waitpid }
1648
- rescue Errno::ESRCH, Errno::ECHILD
1649
- end
1650
- end
1651
- }
1668
+ @ui.after_fork_parent
1652
1669
  end
1653
1670
  end
1654
1671
 
@@ -1774,8 +1791,8 @@ module DEBUGGER__
1774
1791
  def sync &b
1775
1792
  info "sync"
1776
1793
 
1794
+ lock
1777
1795
  begin
1778
- lock
1779
1796
  b.call if b
1780
1797
  ensure
1781
1798
  unlock
@@ -2012,8 +2029,8 @@ module DEBUGGER__
2012
2029
 
2013
2030
  parent_hook = -> child_pid {
2014
2031
  DEBUGGER__.warn "Detaching after fork from parent process #{Process.pid}"
2015
- SESSION.deactivate
2016
2032
  SESSION.after_fork_parent
2033
+ SESSION.deactivate
2017
2034
  }
2018
2035
  child_hook = -> {
2019
2036
  DEBUGGER__.warn "Attaching after process #{parent_pid} fork to child process #{Process.pid}"
@@ -2112,6 +2129,8 @@ module Kernel
2112
2129
  loc = caller_locations(up_level, 1).first; ::DEBUGGER__.add_line_breakpoint loc.path, loc.lineno + 1, oneshot: true, command: cmds
2113
2130
  self
2114
2131
  end
2132
+
2133
+ alias bb debugger if ENV['RUBY_DEBUG_BB']
2115
2134
  end
2116
2135
 
2117
2136
  class Binding
data/lib/debug/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DEBUGGER__
4
- VERSION = "1.3.0"
4
+ VERSION = "1.3.4"
5
5
  end
data/misc/README.md.erb CHANGED
@@ -11,7 +11,7 @@ New debug.rb has several advantages:
11
11
  * [Remote debugging](#remote-debugging): Support remote debugging natively.
12
12
  * UNIX domain socket
13
13
  * TCP/IP
14
- * Integeration with rich debugger frontend
14
+ * Integration with rich debugger frontend
15
15
  * VSCode/DAP ([VSCode rdbg Ruby Debugger - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=KoichiSasada.vscode-rdbg))
16
16
  * Chrome DevTools
17
17
  * Extensible: application can introduce debugging support with several ways:
@@ -340,7 +340,7 @@ $ RUBY_DEBUG_PORT=12345 ruby target.rb
340
340
 
341
341
  ### Integration with external debugger frontend
342
342
 
343
- You can attach with external debuger frontend with VSCode and Chrome.
343
+ You can attach with external debugger frontend with VSCode and Chrome.
344
344
 
345
345
  ```
346
346
  $ rdbg --open=[frontend] target.rb
@@ -352,7 +352,7 @@ Also `open` command allows opening the debug port.
352
352
 
353
353
  #### VSCode integration
354
354
 
355
- If you don't run a debuggee Ruby process on VSCode, you can attach with VSCode later with the fowllowing steps.
355
+ If you don't run a debuggee Ruby process on VSCode, you can attach with VSCode later with the following steps.
356
356
 
357
357
  `rdbg --open=vscode` opens the debug port and tries to invoke the VSCode (`code` command).
358
358
 
@@ -364,7 +364,7 @@ Launching: code /tmp/ruby-debug-vscode-20211014-27706-gd7e85/ /tmp/ruby-debug-vs
364
364
  DEBUGGER: Connected.
365
365
  ```
366
366
 
367
- And it tris to invoke the new VSCode window and VSCode starts attaching to the debuggee Ruby program automatically.
367
+ And it tries to invoke the new VSCode window and VSCode starts attaching to the debuggee Ruby program automatically.
368
368
 
369
369
  You can also use `open vscode` command in REPL.
370
370
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koichi Sasada
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-20 00:00:00.000000000 Z
11
+ date: 2021-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: irb
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  requirements: []
114
- rubygems_version: 3.3.0.dev
114
+ rubygems_version: 3.1.6
115
115
  signing_key:
116
116
  specification_version: 4
117
117
  summary: Debugging functionality for Ruby