debug 1.9.0 → 1.9.2
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/Gemfile +1 -0
- data/README.md +33 -9
- data/ext/debug/debug.c +22 -14
- data/lib/debug/config.rb +16 -0
- data/lib/debug/console.rb +1 -1
- data/lib/debug/irb_integration.rb +10 -0
- data/lib/debug/prelude.rb +1 -1
- data/lib/debug/server_cdp.rb +8 -9
- data/lib/debug/session.rb +16 -8
- data/lib/debug/thread_client.rb +2 -5
- data/lib/debug/version.rb +1 -1
- data/misc/README.md.erb +32 -8
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c242bce58b031f61da73507f6b42a26f1ed8322679d1f0b3460d8fbc8c4b7a23
|
4
|
+
data.tar.gz: 543feb5e53a2c99ba04583edae4a13378667c97b13662f5a4d456dd6bacb17b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5f6c58f38114e3179c3d5c062294ac276b53533fc4a6543114a883198318b672a8506990064f1b40d9f9597d3e1a933cb7c2363ea4cdd4ba0e0571279a80c73
|
7
|
+
data.tar.gz: 142a78dcdc449df6e0148857f992500aa88375707af067f36f1e3391fe2adb7ac8ff0f66623806c5488e94292167a369ca901084475e97b8dc38e32257ccbba0
|
data/Gemfile
CHANGED
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
|
17
|
-
|
18
|
-
Connection
|
19
|
-
Requirement | No
|
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
|
295
|
-
No
|
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
|
-
*
|
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
|
-
|
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;
|
@@ -62,15 +62,23 @@ di_body(const rb_debug_inspector_t *dc, void *ptr)
|
|
62
62
|
long i;
|
63
63
|
|
64
64
|
for (i=1; i<len; i++) {
|
65
|
-
VALUE
|
65
|
+
VALUE e;
|
66
66
|
VALUE iseq = rb_debug_inspector_frame_iseq_get(dc, i);
|
67
|
+
VALUE loc = RARRAY_AREF(locs, i);
|
68
|
+
VALUE path;
|
67
69
|
|
68
70
|
if (!NIL_P(iseq)) {
|
69
|
-
|
70
|
-
|
71
|
+
path = iseq_realpath(iseq);
|
72
|
+
}
|
73
|
+
else {
|
74
|
+
// C frame
|
75
|
+
path = rb_funcall(loc, rb_intern("path"), 0);
|
76
|
+
}
|
77
|
+
|
78
|
+
if (!NIL_P(path) && !NIL_P(skip_path_prefix) && str_start_with(path, skip_path_prefix)) {
|
79
|
+
continue;
|
71
80
|
}
|
72
81
|
|
73
|
-
loc = RARRAY_AREF(locs, i);
|
74
82
|
e = di_entry(loc,
|
75
83
|
rb_debug_inspector_frame_self_get(dc, i),
|
76
84
|
rb_debug_inspector_frame_binding_get(dc, i),
|
@@ -113,26 +121,26 @@ frame_depth(VALUE self)
|
|
113
121
|
|
114
122
|
// iseq
|
115
123
|
|
116
|
-
const
|
124
|
+
const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
|
117
125
|
|
118
126
|
#ifdef HAVE_RB_ISEQ_TYPE
|
119
|
-
VALUE rb_iseq_type(const
|
127
|
+
VALUE rb_iseq_type(const rb_iseq_t *);
|
120
128
|
|
121
129
|
static VALUE
|
122
130
|
iseq_type(VALUE iseqw)
|
123
131
|
{
|
124
|
-
const
|
132
|
+
const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
|
125
133
|
return rb_iseq_type(iseq);
|
126
134
|
}
|
127
135
|
#endif
|
128
136
|
|
129
137
|
#ifdef HAVE_RB_ISEQ_PARAMETERS
|
130
|
-
VALUE rb_iseq_parameters(const
|
138
|
+
VALUE rb_iseq_parameters(const rb_iseq_t *, int is_proc);
|
131
139
|
|
132
140
|
static VALUE
|
133
141
|
iseq_parameters_symbols(VALUE iseqw)
|
134
142
|
{
|
135
|
-
const
|
143
|
+
const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
|
136
144
|
VALUE params = rb_iseq_parameters(iseq, 0);
|
137
145
|
VALUE ary = rb_ary_new();
|
138
146
|
|
@@ -159,12 +167,12 @@ iseq_parameters_symbols(VALUE iseqw)
|
|
159
167
|
#endif
|
160
168
|
|
161
169
|
#ifdef HAVE_RB_ISEQ_CODE_LOCATION
|
162
|
-
void rb_iseq_code_location(const
|
170
|
+
void rb_iseq_code_location(const rb_iseq_t *, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
|
163
171
|
|
164
172
|
static VALUE
|
165
173
|
iseq_first_line(VALUE iseqw)
|
166
174
|
{
|
167
|
-
const
|
175
|
+
const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
|
168
176
|
int line;
|
169
177
|
rb_iseq_code_location(iseq, &line, NULL, NULL, NULL);
|
170
178
|
return INT2NUM(line);
|
@@ -173,7 +181,7 @@ iseq_first_line(VALUE iseqw)
|
|
173
181
|
static VALUE
|
174
182
|
iseq_last_line(VALUE iseqw)
|
175
183
|
{
|
176
|
-
const
|
184
|
+
const rb_iseq_t *iseq = rb_iseqw_to_iseq(iseqw);
|
177
185
|
int line;
|
178
186
|
rb_iseq_code_location(iseq, NULL, NULL, &line, NULL);
|
179
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
@@ -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 $
|
8
|
+
# export RUBYOPT="-r /path/to/debug/prelude ${RUBYOPT}"
|
9
9
|
#
|
10
10
|
module Kernel
|
11
11
|
def debugger(*a, up_level: 0, **kw)
|
data/lib/debug/server_cdp.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
301
|
-
correct_key =
|
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
|
382
|
-
accept =
|
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
|
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
|
-
# *
|
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
|
-
|
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
|
|
data/lib/debug/thread_client.rb
CHANGED
@@ -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.
|
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.
|
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
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
|
17
|
-
|
18
|
-
Connection
|
19
|
-
Requirement | No
|
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
|
295
|
-
No
|
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.
|
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:
|
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.
|
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: []
|