debug 1.9.1 → 1.9.2

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: cbc923d5ce88d6092dbc8125ee988ec386fffdc3409b8bca4113ab925bc61311
4
- data.tar.gz: 2e0a5013263c3c220dfee989af1a87c224f36bf03504fef120785717df5b9ef7
3
+ metadata.gz: c242bce58b031f61da73507f6b42a26f1ed8322679d1f0b3460d8fbc8c4b7a23
4
+ data.tar.gz: 543feb5e53a2c99ba04583edae4a13378667c97b13662f5a4d456dd6bacb17b5
5
5
  SHA512:
6
- metadata.gz: eb62ffd4d8111449f618b8a91a4ab9b89237916eeb71e0fd57dd1d78d4ddadff4a3897cbdf989cd989b9c0a52103f8bfd02f1e6cd9d2453b70bd72025f1b63aa
7
- data.tar.gz: 81607797fa369d2eeed0fe35335d078ea04be3ab653dea8b653b0c25453c2000407a532c17246d41be175f1df34d7bebc069deb83fef976b39a79df2a399b79c
6
+ metadata.gz: b5f6c58f38114e3179c3d5c062294ac276b53533fc4a6543114a883198318b672a8506990064f1b40d9f9597d3e1a933cb7c2363ea4cdd4ba0e0571279a80c73
7
+ data.tar.gz: 142a78dcdc449df6e0148857f992500aa88375707af067f36f1e3391fe2adb7ac8ff0f66623806c5488e94292167a369ca901084475e97b8dc38e32257ccbba0
data/Gemfile CHANGED
@@ -7,3 +7,4 @@ gem "rake-compiler"
7
7
  gem "test-unit", "~> 3.0"
8
8
  gem "test-unit-rr"
9
9
  gem "json-schema"
10
+ gem "test-unit-launchable"
data/README.md CHANGED
@@ -13,10 +13,10 @@ New debug.rb has several advantages:
13
13
  * TCP/IP
14
14
  * Integration with rich debugger frontends
15
15
 
16
- Frontend | [Console](https://github.com/ruby/debug#invoke-as-a-remote-debuggee) | [VSCode](https://github.com/ruby/debug#vscode-integration) | [Chrome DevTool](#chrome-devtool-integration) |
17
- ---|---|---|---|
18
- Connection | UDS, TCP/IP | UDS, TCP/IP | TCP/IP |
19
- Requirement | No | [vscode-rdbg](https://marketplace.visualstudio.com/items?itemName=KoichiSasada.vscode-rdbg) | Chrome |
16
+ | Frontend | [Console](https://github.com/ruby/debug#invoke-as-a-remote-debuggee) | [VSCode](https://github.com/ruby/debug#vscode-integration) | [Chrome DevTool](#chrome-devtool-integration) |
17
+ | ----------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------- |
18
+ | Connection | UDS, TCP/IP | UDS, TCP/IP | TCP/IP |
19
+ | Requirement | No | [vscode-rdbg](https://marketplace.visualstudio.com/items?itemName=KoichiSasada.vscode-rdbg) | Chrome |
20
20
 
21
21
  * Extensible: application can introduce debugging support in several ways:
22
22
  * By `rdbg` command
@@ -289,10 +289,10 @@ You can run your application as a remote debuggee, and the remote debugger conso
289
289
 
290
290
  There are multiple ways to run your program as a debuggee:
291
291
 
292
- Stop at program start | [`rdbg` option](https://github.com/ruby/debug#rdbg---open-or-rdbg--o-for-short) | [require](https://github.com/ruby/debug#require-debugopen-in-a-program) | [debugger API](https://github.com/ruby/debug#start-by-method)
293
- ---|---|---|---|
294
- Yes | `rdbg --open` | `require "debug/open"` | `DEBUGGER__.open`
295
- No | `rdbg --open --nonstop` | `require "debug/open_nonstop"` | `DEBUGGER__.open(nonstop: true)`
292
+ | Stop at program start | [`rdbg` option](https://github.com/ruby/debug#rdbg---open-or-rdbg--o-for-short) | [require](https://github.com/ruby/debug#require-debugopen-in-a-program) | [debugger API](https://github.com/ruby/debug#start-by-method) |
293
+ | --------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------- |
294
+ | Yes | `rdbg --open` | `require "debug/open"` | `DEBUGGER__.open` |
295
+ | No | `rdbg --open --nonstop` | `require "debug/open_nonstop"` | `DEBUGGER__.open(nonstop: true)` |
296
296
 
297
297
  #### `rdbg --open` (or `rdbg -O` for short)
298
298
 
@@ -713,7 +713,7 @@ The `<...>` notation means the argument.
713
713
  * `eval <expr>`
714
714
  * Evaluate `<expr>` on the current frame.
715
715
  * `irb`
716
- * Invoke `irb` on the current frame.
716
+ * Activate and switch to `irb:rdbg` console
717
717
 
718
718
  ### Trace
719
719
 
@@ -784,6 +784,30 @@ The `<...>` notation means the argument.
784
784
  * Show help for the given command.
785
785
 
786
786
 
787
+ ### Using IRB as the Debug Console
788
+
789
+ Starting from version `v1.9`, you can now use IRB as the debug console. This integration brings additional features such as:
790
+
791
+ * Autocompletion
792
+ * Support for multi-line input
793
+ * Access to commands not available in `debug`, like `show_source` or `show_doc`
794
+ * [Configurable command aliases](https://docs.ruby-lang.org/en/master/IRB.html#module-IRB-label-Command+Aliases)
795
+
796
+ To switch to the IRB console, simply use the `irb` command in the debug console.
797
+
798
+ Once activated, you'll notice the prompt changes to:
799
+
800
+ ```txt
801
+ irb:rdbg(main):001>
802
+ ```
803
+
804
+ If you want to make IRB the default console for all sessions, configure the `irb_console` setting by either:
805
+
806
+ * Setting the `RUBY_DEBUG_IRB_CONSOLE=true` environment variable
807
+ * Or adding `config set irb_console 1` to your `~/.rdbgrc`
808
+
809
+ To disable the IRB console in the current session, execute `config set irb_console 0` in the console.
810
+
787
811
  ## Debugger API
788
812
 
789
813
  ### Start debugging
data/ext/debug/debug.c CHANGED
@@ -8,13 +8,13 @@ static VALUE rb_mDebugger;
8
8
 
9
9
  // iseq
10
10
  typedef struct rb_iseq_struct rb_iseq_t;
11
+ const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
11
12
  VALUE rb_iseq_realpath(const rb_iseq_t *iseq);
12
13
 
13
14
  static VALUE
14
15
  iseq_realpath(VALUE iseqw)
15
16
  {
16
- rb_iseq_t *iseq = DATA_PTR(iseqw);
17
- return rb_iseq_realpath(iseq);
17
+ return rb_iseq_realpath(rb_iseqw_to_iseq(iseqw));
18
18
  }
19
19
 
20
20
  static VALUE rb_cFrameInfo;
@@ -121,26 +121,26 @@ frame_depth(VALUE self)
121
121
 
122
122
  // iseq
123
123
 
124
- const struct rb_iseq *rb_iseqw_to_iseq(VALUE iseqw);
124
+ const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
125
125
 
126
126
  #ifdef HAVE_RB_ISEQ_TYPE
127
- VALUE rb_iseq_type(const struct rb_iseq *);
127
+ VALUE rb_iseq_type(const rb_iseq_t *);
128
128
 
129
129
  static VALUE
130
130
  iseq_type(VALUE iseqw)
131
131
  {
132
- const struct rb_iseq *iseq = rb_iseqw_to_iseq(iseqw);
132
+ const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
133
133
  return rb_iseq_type(iseq);
134
134
  }
135
135
  #endif
136
136
 
137
137
  #ifdef HAVE_RB_ISEQ_PARAMETERS
138
- VALUE rb_iseq_parameters(const struct rb_iseq *, int is_proc);
138
+ VALUE rb_iseq_parameters(const rb_iseq_t *, int is_proc);
139
139
 
140
140
  static VALUE
141
141
  iseq_parameters_symbols(VALUE iseqw)
142
142
  {
143
- const struct rb_iseq *iseq = rb_iseqw_to_iseq(iseqw);
143
+ const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
144
144
  VALUE params = rb_iseq_parameters(iseq, 0);
145
145
  VALUE ary = rb_ary_new();
146
146
 
@@ -167,12 +167,12 @@ iseq_parameters_symbols(VALUE iseqw)
167
167
  #endif
168
168
 
169
169
  #ifdef HAVE_RB_ISEQ_CODE_LOCATION
170
- void rb_iseq_code_location(const struct rb_iseq *, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
170
+ void rb_iseq_code_location(const rb_iseq_t *, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
171
171
 
172
172
  static VALUE
173
173
  iseq_first_line(VALUE iseqw)
174
174
  {
175
- const struct rb_iseq *iseq = rb_iseqw_to_iseq(iseqw);
175
+ const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
176
176
  int line;
177
177
  rb_iseq_code_location(iseq, &line, NULL, NULL, NULL);
178
178
  return INT2NUM(line);
@@ -181,7 +181,7 @@ iseq_first_line(VALUE iseqw)
181
181
  static VALUE
182
182
  iseq_last_line(VALUE iseqw)
183
183
  {
184
- const struct rb_iseq *iseq = rb_iseqw_to_iseq(iseqw);
184
+ const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
185
185
  int line;
186
186
  rb_iseq_code_location(iseq, NULL, NULL, &line, NULL);
187
187
  return INT2NUM(line);
data/lib/debug/config.rb CHANGED
@@ -158,6 +158,22 @@ module DEBUGGER__
158
158
  SESSION.set_no_sigint_hook old, new
159
159
  end
160
160
  end
161
+
162
+ if_updated old_conf, conf, :irb_console do |old, new|
163
+ if defined?(SESSION) && SESSION.active?
164
+ # irb_console is switched from true to false
165
+ if old
166
+ SESSION.deactivate_irb_integration
167
+ # irb_console is switched from false to true
168
+ else
169
+ if CONFIG[:open]
170
+ SESSION.instance_variable_get(:@ui).puts "\nIRB is not supported on the remote console."
171
+ else
172
+ SESSION.activate_irb_integration
173
+ end
174
+ end
175
+ end
176
+ end
161
177
  end
162
178
 
163
179
  private def if_updated old_conf, new_conf, key
data/lib/debug/console.rb CHANGED
@@ -143,7 +143,7 @@ module DEBUGGER__
143
143
  rescue LoadError
144
144
  def readline prompt
145
145
  print prompt
146
- gets
146
+ $stdin.gets
147
147
  end
148
148
 
149
149
  def history
@@ -24,4 +24,14 @@ module DEBUGGER__
24
24
  IRB::Context.prepend(IrbPatch)
25
25
  end
26
26
  end
27
+
28
+ class Session
29
+ def deactivate_irb_integration
30
+ Reline.completion_proc = nil
31
+ Reline.output_modifier_proc = nil
32
+ Reline.autocompletion = false
33
+ Reline.dig_perfect_match_proc = nil
34
+ reset_ui UI_LocalConsole.new
35
+ end
36
+ end
27
37
  end
data/lib/debug/prelude.rb CHANGED
@@ -5,7 +5,7 @@ return if defined?(::DEBUGGER__::Session)
5
5
 
6
6
  # Put the following line in your login script (e.g. ~/.bash_profile) with modified path:
7
7
  #
8
- # export RUBYOPT="-r /path/to/debug/prelude $(RUBYOPT)"
8
+ # export RUBYOPT="-r /path/to/debug/prelude ${RUBYOPT}"
9
9
  #
10
10
  module Kernel
11
11
  def debugger(*a, up_level: 0, **kw)
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'json'
4
4
  require 'digest/sha1'
5
- require 'base64'
6
5
  require 'securerandom'
7
6
  require 'stringio'
8
7
  require 'open3'
@@ -131,7 +130,7 @@ module DEBUGGER__
131
130
  stdout.close
132
131
  data = stderr.readpartial 4096
133
132
  stderr.close
134
- if data.match /DevTools listening on ws:\/\/127.0.0.1:(\d+)(.*)/
133
+ if data.match(/DevTools listening on ws:\/\/127.0.0.1:(\d+)(.*)/)
135
134
  port = $1
136
135
  path = $2
137
136
  end
@@ -158,7 +157,7 @@ module DEBUGGER__
158
157
  raise NotFoundChromeEndpointError
159
158
  end
160
159
  stderr.close
161
- if data.match /DevTools listening on ws:\/\/127.0.0.1:(\d+)(.*)/
160
+ if data.match(/DevTools listening on ws:\/\/127.0.0.1:(\d+)(.*)/)
162
161
  port = $1
163
162
  path = $2
164
163
  end
@@ -190,7 +189,7 @@ module DEBUGGER__
190
189
  while i < ITERATIONS
191
190
  i += 1
192
191
  if File.exist?(tf) && data = File.read(tf)
193
- if data.match /DevTools listening on ws:\/\/127.0.0.1:(\d+)(.*)/
192
+ if data.match(/DevTools listening on ws:\/\/127.0.0.1:(\d+)(.*)/)
194
193
  port = $1
195
194
  path = $2
196
195
  return [port, path]
@@ -297,8 +296,8 @@ module DEBUGGER__
297
296
  res = @sock.readpartial 4092
298
297
  show_protocol :<, res
299
298
 
300
- if res.match /^Sec-WebSocket-Accept: (.*)\r\n/
301
- correct_key = Base64.strict_encode64 Digest::SHA1.digest "#{key}==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
299
+ if res.match(/^Sec-WebSocket-Accept: (.*)\r\n/)
300
+ correct_key = Digest::SHA1.base64digest "#{key}==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
302
301
  raise "The Sec-WebSocket-Accept value: #{$1} is not valid" unless $1 == correct_key
303
302
  else
304
303
  raise "Unknown response: #{res}"
@@ -378,8 +377,8 @@ module DEBUGGER__
378
377
  req = @sock.readpartial 4096
379
378
  show_protocol '>', req
380
379
 
381
- if req.match /^Sec-WebSocket-Key: (.*)\r\n/
382
- accept = Base64.strict_encode64 Digest::SHA1.digest "#{$1}258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
380
+ if req.match(/^Sec-WebSocket-Key: (.*)\r\n/)
381
+ accept = Digest::SHA1.base64digest "#{$1}258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
383
382
  res = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: #{accept}\r\n\r\n"
384
383
  @sock.print res
385
384
  show_protocol :<, res
@@ -658,7 +657,7 @@ module DEBUGGER__
658
657
 
659
658
  def activate_bp bps
660
659
  bps.each_key{|k|
661
- if k.match /^\d+:(\d+):(.*)/
660
+ if k.match(/^\d+:(\d+):(.*)/)
662
661
  line = $1
663
662
  path = $2
664
663
  SESSION.add_line_breakpoint(path, line.to_i + 1)
data/lib/debug/session.rb CHANGED
@@ -202,11 +202,6 @@ module DEBUGGER__
202
202
  end
203
203
  @tp_thread_end.enable
204
204
 
205
- if CONFIG[:irb_console] && !CONFIG[:open]
206
- require_relative "irb_integration"
207
- thc.activate_irb_integration
208
- end
209
-
210
205
  # session start
211
206
  q << true
212
207
  session_server_main
@@ -214,6 +209,12 @@ module DEBUGGER__
214
209
  first_q << :ok
215
210
 
216
211
  q.pop
212
+
213
+ # For activating irb:rdbg with startup config like `RUBY_DEBUG_IRB_CONSOLE=1`
214
+ # Because in that case the `Config#if_updated` callback would not be triggered
215
+ if CONFIG[:irb_console] && !CONFIG[:open]
216
+ activate_irb_integration
217
+ end
217
218
  end
218
219
 
219
220
  def deactivate
@@ -938,14 +939,15 @@ module DEBUGGER__
938
939
  end
939
940
 
940
941
  # * `irb`
941
- # * Invoke `irb` on the current frame.
942
+ # * Activate and switch to `irb:rdbg` console
942
943
  register_command 'irb' do |arg|
943
944
  if @ui.remote?
944
945
  @ui.puts "\nIRB is not supported on the remote console."
945
- :retry
946
946
  else
947
- request_eval :irb, nil
947
+ config_set :irb_console, true
948
948
  end
949
+
950
+ :retry
949
951
  end
950
952
 
951
953
  ### Trace
@@ -1876,6 +1878,12 @@ module DEBUGGER__
1876
1878
  end
1877
1879
  end
1878
1880
 
1881
+ def activate_irb_integration
1882
+ require_relative "irb_integration"
1883
+ thc = get_thread_client(@session_server)
1884
+ thc.activate_irb_integration
1885
+ end
1886
+
1879
1887
  def enter_postmortem_session exc
1880
1888
  return unless exc.instance_variable_defined? :@__debugger_postmortem_frames
1881
1889
 
@@ -989,7 +989,7 @@ module DEBUGGER__
989
989
  true
990
990
  else
991
991
  true if depth >= DEBUGGER__.frame_depth - 3 &&
992
- caller_locations(2, 1).first.label == target_location_label
992
+ caller_locations(2, 1).first.base_label == target_location_label
993
993
  # TODO: imcomplete condition
994
994
  end
995
995
  end
@@ -1005,7 +1005,7 @@ module DEBUGGER__
1005
1005
  true if pat === tp.callee_id.to_s
1006
1006
  else # :return, :b_return
1007
1007
  true if depth >= DEBUGGER__.frame_depth - 3 &&
1008
- caller_locations(2, 1).first.label == target_location_label
1008
+ caller_locations(2, 1).first.base_label == target_location_label
1009
1009
  # TODO: imcomplete condition
1010
1010
  end
1011
1011
  end
@@ -1056,9 +1056,6 @@ module DEBUGGER__
1056
1056
  end
1057
1057
  when :call
1058
1058
  result = frame_eval(eval_src)
1059
- when :irb
1060
- require_relative "irb_integration"
1061
- activate_irb_integration
1062
1059
  when :display, :try_display
1063
1060
  failed_results = []
1064
1061
  eval_src.each_with_index{|src, i|
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.9.1"
4
+ VERSION = "1.9.2"
5
5
  end
data/misc/README.md.erb CHANGED
@@ -13,10 +13,10 @@ New debug.rb has several advantages:
13
13
  * TCP/IP
14
14
  * Integration with rich debugger frontends
15
15
 
16
- Frontend | [Console](https://github.com/ruby/debug#invoke-as-a-remote-debuggee) | [VSCode](https://github.com/ruby/debug#vscode-integration) | [Chrome DevTool](#chrome-devtool-integration) |
17
- ---|---|---|---|
18
- Connection | UDS, TCP/IP | UDS, TCP/IP | TCP/IP |
19
- Requirement | No | [vscode-rdbg](https://marketplace.visualstudio.com/items?itemName=KoichiSasada.vscode-rdbg) | Chrome |
16
+ | Frontend | [Console](https://github.com/ruby/debug#invoke-as-a-remote-debuggee) | [VSCode](https://github.com/ruby/debug#vscode-integration) | [Chrome DevTool](#chrome-devtool-integration) |
17
+ | ----------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------- |
18
+ | Connection | UDS, TCP/IP | UDS, TCP/IP | TCP/IP |
19
+ | Requirement | No | [vscode-rdbg](https://marketplace.visualstudio.com/items?itemName=KoichiSasada.vscode-rdbg) | Chrome |
20
20
 
21
21
  * Extensible: application can introduce debugging support in several ways:
22
22
  * By `rdbg` command
@@ -289,10 +289,10 @@ You can run your application as a remote debuggee, and the remote debugger conso
289
289
 
290
290
  There are multiple ways to run your program as a debuggee:
291
291
 
292
- Stop at program start | [`rdbg` option](https://github.com/ruby/debug#rdbg---open-or-rdbg--o-for-short) | [require](https://github.com/ruby/debug#require-debugopen-in-a-program) | [debugger API](https://github.com/ruby/debug#start-by-method)
293
- ---|---|---|---|
294
- Yes | `rdbg --open` | `require "debug/open"` | `DEBUGGER__.open`
295
- No | `rdbg --open --nonstop` | `require "debug/open_nonstop"` | `DEBUGGER__.open(nonstop: true)`
292
+ | Stop at program start | [`rdbg` option](https://github.com/ruby/debug#rdbg---open-or-rdbg--o-for-short) | [require](https://github.com/ruby/debug#require-debugopen-in-a-program) | [debugger API](https://github.com/ruby/debug#start-by-method) |
293
+ | --------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------- |
294
+ | Yes | `rdbg --open` | `require "debug/open"` | `DEBUGGER__.open` |
295
+ | No | `rdbg --open --nonstop` | `require "debug/open_nonstop"` | `DEBUGGER__.open(nonstop: true)` |
296
296
 
297
297
  #### `rdbg --open` (or `rdbg -O` for short)
298
298
 
@@ -509,6 +509,30 @@ The `<...>` notation means the argument.
509
509
 
510
510
  <%= DEBUGGER__.help %>
511
511
 
512
+ ### Using IRB as the Debug Console
513
+
514
+ Starting from version `v1.9`, you can now use IRB as the debug console. This integration brings additional features such as:
515
+
516
+ * Autocompletion
517
+ * Support for multi-line input
518
+ * Access to commands not available in `debug`, like `show_source` or `show_doc`
519
+ * [Configurable command aliases](https://docs.ruby-lang.org/en/master/IRB.html#module-IRB-label-Command+Aliases)
520
+
521
+ To switch to the IRB console, simply use the `irb` command in the debug console.
522
+
523
+ Once activated, you'll notice the prompt changes to:
524
+
525
+ ```txt
526
+ irb:rdbg(main):001>
527
+ ```
528
+
529
+ If you want to make IRB the default console for all sessions, configure the `irb_console` setting by either:
530
+
531
+ * Setting the `RUBY_DEBUG_IRB_CONSOLE=true` environment variable
532
+ * Or adding `config set irb_console 1` to your `~/.rdbgrc`
533
+
534
+ To disable the IRB console in the current session, execute `config set irb_console 0` in the console.
535
+
512
536
  ## Debugger API
513
537
 
514
538
  ### Start debugging
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koichi Sasada
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2023-12-22 00:00:00.000000000 Z
10
+ date: 2024-03-29 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: irb
@@ -90,7 +89,6 @@ licenses:
90
89
  metadata:
91
90
  homepage_uri: https://github.com/ruby/debug
92
91
  source_code_uri: https://github.com/ruby/debug
93
- post_install_message:
94
92
  rdoc_options: []
95
93
  require_paths:
96
94
  - lib
@@ -105,8 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
103
  - !ruby/object:Gem::Version
106
104
  version: '0'
107
105
  requirements: []
108
- rubygems_version: 3.5.1
109
- signing_key:
106
+ rubygems_version: 3.6.0.dev
110
107
  specification_version: 4
111
108
  summary: Debugging functionality for Ruby
112
109
  test_files: []