debug 1.3.0 → 1.3.4

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 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