debug 1.0.0.beta4 → 1.0.0.beta5

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: ebaae12c10e51036f850fd1cbcde66d891a1e50b64bc5d96bfdab610cb42fd1d
4
- data.tar.gz: e62eee365aa1409c650049ccb8ed237854aeed6f7a066dc2b84f96c9cffefd12
3
+ metadata.gz: '039bd2cbfdb3a67bbd91603b077a4f4784235fb0c7b48721a4b9f27b493231c6'
4
+ data.tar.gz: f9605d076dff9d8571e70245baa5c2e97c2377cc7f92ee627cbc1f051361217b
5
5
  SHA512:
6
- metadata.gz: 2aa2b044268220dc79d72850f6366474fff647fa6893360044ce64a8a97e4d759e414da6c39dac52a6b33593512675091ed4fb4a7399c1357b344d342f3c812f
7
- data.tar.gz: 506d0afeb3e3926da6631e99234fd2ba4c96220d5def5a95d0e51afa54ae28beb19c30873c3c0cf9a95fa975023364f7088a0190d26452e307e715925e21a78c
6
+ metadata.gz: f222a8b1ec58fd6f5264e61ee8613e6ed229c9ebff73c6b4904c4c6c2bded0d625b776fb510b23dec57636cf576a68d471f0b91d7b01d36f8baad741ff64fd38
7
+ data.tar.gz: 152431ba38203334bbf1c7449ff36a6d49f5116aaa78c017ca5ffa6d695ca87be06bc011822d0bbd325e15c46504385adf4ef94e74ebd37f97468f049da910e8
@@ -0,0 +1,34 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ matrix:
22
+ ruby-version: ['2.6', '2.7', '3.0', 'head', 'debug']
23
+
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby-version }}
32
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
33
+ - name: Run tests
34
+ run: bundle exec rake
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
  *.bundle
10
10
  /Gemfile.lock
11
11
  /lib/debug/debug.so
12
+ .ruby-version
data/CONTRIBUTING.md CHANGED
@@ -1,3 +1,51 @@
1
+ ## Set Up a Development Environment
2
+
3
+ 1. `$ git clone git@github.com:ruby/debug.git`
4
+ 2. `$ bundle install`
5
+ 3. `$ rake` - this will
6
+ - Compile the C extension locally (which can also be done solely with `rake compile`).
7
+ - Run tests.
8
+ - Re-generate `README.md`.
9
+
10
+ If you spot any problem, please open an issue.
11
+
12
+ ## Run Tests
13
+
14
+ ### Run all tests
15
+
16
+ ```bash
17
+ $ rake test
18
+ # or
19
+ $ ruby bin/test-unit.rb
20
+ ```
21
+
22
+ ### Run specific test(s)
23
+
24
+
25
+ ```bash
26
+ $ ruby test/debug/bp_test.rb # run all tests in the specified file
27
+ $ ruby test/debug/bp_test.rb -h # to see all the test options
28
+ ```
29
+
30
+ ## To Update README
31
+
32
+ This project generates `README.md` from the template `misc/README.md.erb`
33
+
34
+ So **do not** directly update `README.md`. Instead, you should update the template's source and run
35
+
36
+ ```bash
37
+ $ rake
38
+ ```
39
+
40
+ to reflect the changes on `README.md`.
41
+
42
+
43
+ ### When to re-generate `README.md`
44
+
45
+ - After updating `misc/README.md.erb`.
46
+ - After updating `rdbg` executable's options.
47
+ - After updating comments of debugger's commands.
48
+
1
49
  ## Manually Test Your Changes
2
50
 
3
51
  You can manually test your changes with a simple Ruby script + a line of command. The following example will help you check:
data/Gemfile CHANGED
@@ -4,4 +4,4 @@ gemspec
4
4
 
5
5
  gem "rake"
6
6
  gem "rake-compiler"
7
- gem "minitest", "~> 5.0"
7
+ gem "test-unit", "~> 3.0"
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Ruby](https://github.com/ruby/debug/actions/workflows/ruby.yml/badge.svg?branch=master)](https://github.com/ruby/debug/actions/workflows/ruby.yml?query=branch%3Amaster)
2
+
1
3
  # debug.rb
2
4
 
3
5
  This library provides debugging functionality to Ruby.
@@ -49,28 +51,33 @@ To use debugging feature, you can have 3 ways.
49
51
 
50
52
  ### Local debug console
51
53
 
54
+ #### (1) Use `rdbg` command
55
+
52
56
  ```
53
- # (1) Use `rdbg` command
54
57
  $ rdbg target.rb
55
58
  $ rdbg -- -r foo -e expr # -- is required to make clear rdbg options and ruby's options
59
+ ```
56
60
 
57
- # (2) Use `-r debug/run` command line option
61
+ #### (2) Use `-r debug/run` command line option
58
62
 
63
+ ```
59
64
  $ ruby -r debug/run target.rb
65
+ ```
60
66
 
61
- # (3) Write `require 'debug...' in .rb files
67
+ #### (3) Write `require 'debug...'` in .rb files
62
68
 
63
- $ cat target.rb
69
+ ```ruby
70
+ # target.rb
64
71
  require 'debug/run' # start the debug console
65
- ... rest of program ...
66
72
 
67
73
  # or
68
74
 
69
- $ cat target.rb
70
75
  require 'debug/session' # introduce the functionality
71
76
  DEBUGGER__.console # and start the debug console
72
- ... rest of program ...
77
+ # ... rest of program ...
78
+ ```
73
79
 
80
+ ```
74
81
  $ ruby target.rb
75
82
  ```
76
83
 
@@ -144,33 +151,36 @@ $ rdbg ~/src/rb/target.rb
144
151
 
145
152
  ### Remote debug (1) UNIX domain socket
146
153
 
154
+ #### (1) Use `rdbg` command
155
+
147
156
  ```
148
- # (1) Use `rdbg` command
149
157
  $ rdbg --open target.rb # or rdbg -O target.rb for shorthand
150
158
  Debugger can attach via UNIX domain socket (/home/ko1/.ruby-debug-sock/ruby-debug-ko1-5042)
151
- ...
159
+ ```
152
160
 
153
- # (2) Use `-r debug/open` command line option
161
+ #### (2) Use `-r debug/open` command line option
154
162
 
163
+ ```
155
164
  $ ruby -r debug/open target.rb
156
165
  Debugger can attach via UNIX domain socket (/home/ko1/.ruby-debug-sock/ruby-debug-ko1-5042)
157
- ...
166
+ ```
158
167
 
159
- # (3) Write `require 'debug/open' in .rb files
160
- $ cat target.rb
168
+ #### (3) Write `require 'debug/open'` in .rb files
169
+
170
+ ```ruby
171
+ # target.rb
161
172
  require 'debug/open' # open the debugger entry point by UNIX domain socket.
162
- ...
163
173
 
164
174
  # or
165
175
 
166
- $ cat target.rb
167
176
  require 'debug/server' # introduce remote debugging feature
168
177
  DEBUGGER__.open # open the debugger entry point by UNIX domain socket.
169
178
  # or DEBUGGER__.open_unix to specify UNIX domain socket.
179
+ ```
170
180
 
181
+ ```
171
182
  $ ruby target.rb
172
183
  Debugger can attach via UNIX domain socket (/home/ko1/.ruby-debug-sock/ruby-debug-ko1-5042)
173
- ...
174
184
  ```
175
185
 
176
186
  It runs target.rb and accept debugger connection within UNIX domain socket.
@@ -234,40 +244,49 @@ The socket file is located at
234
244
 
235
245
  You can open the TCP/IP port instead of using UNIX domain socket.
236
246
 
247
+ #### (1) Use `rdbg` command
248
+
237
249
  ```
238
- # (1) Use `rdbg` command
239
250
  $ rdbg -O --port=12345 target.rb
240
251
  # or
241
252
  $ rdbg --open --port=12345 target.rb
242
253
  Debugger can attach via TCP/IP (localhost:12345)
243
- ...
254
+ ```
255
+
256
+ #### (2) Use `-r debug/open` command line option
244
257
 
245
- # (2) Use `-r debug/open` command line option
246
258
 
259
+ ```
247
260
  $ RUBY_DEBUG_PORT=12345 ruby -r debug/open target.rb
248
261
  Debugger can attach via TCP/IP (localhost:12345)
249
- ...
262
+ ```
250
263
 
251
- # (3) Write `require 'debug/open' in .rb files
252
- $ cat target.rb
264
+ #### (3) Write `require 'debug/open'` in .rb files
265
+
266
+ ```ruby
267
+ # target.rb
253
268
  require 'debug/open' # open the debugger entry point.
254
- ...
269
+ ```
255
270
 
256
- # and run with environment variable RUBY_DEBUG_PORT
271
+ and run with environment variable RUBY_DEBUG_PORT
272
+
273
+ ```
257
274
  $ RUBY_DEBUG_PORT=12345 ruby target.rb
258
275
  Debugger can attach via TCP/IP (localhost:12345)
259
- ...
276
+ ```
260
277
 
261
- # or
278
+ or
262
279
 
263
- $ cat target.rb
280
+ ```ruby
281
+ # target.rb
264
282
  require 'debug/server' # introduce remote debugging feature
265
283
  DEBUGGER__.open(port: 12345)
266
284
  # or DEBUGGER__.open_tcp(port: 12345)
285
+ ```
267
286
 
287
+ ```
268
288
  $ ruby target.rb
269
289
  Debugger can attach via TCP/IP (localhost:12345)
270
- ...
271
290
  ```
272
291
 
273
292
  You can also specify the host with the `RUBY_DEBUG_HOST` environment variable. And also `DEBUGGER__.open` method accepts a `host:` keyword parameter. If the host is not given, `localhost` will be used.
@@ -296,10 +315,10 @@ You can control debuggee's behavior with environment variables:
296
315
  * `RUBY_DEBUG_COMMANDS`: Debug commands invoked at the first stop. Commands should be separated by ';;'.
297
316
  * `RUBY_DEBUG_SHOW_SRC_LINES`: Show n lines source code on breakpoint (default: 10 lines).
298
317
  * `RUBY_DEBUG_SHOW_FRAMES`: Show n frames on breakpoint (default: 2 frames).
299
-
300
318
  * Remote debugging
301
319
  * `RUBY_DEBUG_PORT`: TCP/IP remote debugging: port to open.
302
320
  * `RUBY_DEBUG_HOST`: TCP/IP remote debugging: host (localhost if not given) to open.
321
+ * `RUBY_DEBUG_SOCK_PATH`: UNIX Domain Socket remote debugging: socket path to open.
303
322
  * `RUBY_DEBUG_SOCK_DIR`: UNIX Domain Socket remote debugging: socket directory to open.
304
323
 
305
324
  ## Debug command on the debug console
@@ -350,8 +369,8 @@ The `<...>` notation means the argument.
350
369
  * Note that this feature is super slow.
351
370
  * `catch <Error>`
352
371
  * Set breakpoint on raising `<Error>`.
353
- * `watch <expr>`
354
- * Stop the execution when the result of `<expr>` is changed.
372
+ * `watch @ivar`
373
+ * Stop the execution when the result of current scope's `@ivar` is changed.
355
374
  * Note that this feature is super slow.
356
375
  * `del[ete]`
357
376
  * delete all breakpoints.
@@ -377,7 +396,7 @@ The `<...>` notation means the argument.
377
396
  * `i[nfo]`, `i[nfo] l[ocal[s]]`
378
397
  * Show information about the current frame (local variables)
379
398
  * It includes `self` as `%self` and a return value as `%return`.
380
- * `i[nfo] th[read[s]]
399
+ * `i[nfo] th[read[s]]`
381
400
  * Show all threads (same as `th[read]`).
382
401
  * `display`
383
402
  * Show display setting.
@@ -434,13 +453,16 @@ exe/rdbg [options] -- [debuggee options]
434
453
 
435
454
  Debug console mode:
436
455
  -n, --nonstop Do not stop at the beginning of the script.
437
- -e [COMMAND] execute debug command at the beginning of the script.
438
- -O, --open Start debuggee with opening the debugger port.
456
+ -e COMMAND execute debug command at the beginning of the script.
457
+ -x, --init-script=FILE execute debug command in the FILE.
458
+
459
+ -O, --open Start remote debugging with opening the network port.
439
460
  If TCP/IP options are not given,
440
461
  a UNIX domain socket will be used.
441
- --sock-path=[SOCK_PATH] UNIX Doman socket path
442
- --port=[PORT] Listening TCP/IP port
443
- --host=[HOST] Listening TCP/IP host
462
+ --sock-path=SOCK_PATH UNIX Doman socket path
463
+ --port=PORT Listening TCP/IP port
464
+ --host=HOST Listening TCP/IP host
465
+ --cookie=COOKIE Set a cookie for connection
444
466
 
445
467
  Debug console mode runs Ruby program with the debug console.
446
468
 
@@ -462,6 +484,15 @@ Attach mode:
462
484
  'rdbg -A port' tries to connect to localhost:port via TCP/IP.
463
485
  'rdbg -A host port' tries to connect to host:port via TCP/IP.
464
486
 
487
+ Other options:
488
+ -h, --help Print help
489
+ -c, --command Command mode (first argument is command name)
490
+ --util=NAME Utility mode (used by tools)
491
+
492
+ NOTE
493
+ All messages communicated between a debugger and a debuggee are *NOT* encrypted.
494
+ Please use the remote debugging feature carefully.
495
+
465
496
  ```
466
497
 
467
498
  # Contributing
@@ -469,3 +500,7 @@ Attach mode:
469
500
  Bug reports and pull requests are welcome on GitHub at https://github.com/ruby/debug.
470
501
 
471
502
  Please also check the [contributing guideline](/CONTRIBUTING.md).
503
+
504
+ # Acknowledgement
505
+
506
+ * Some tests are based on [deivid-rodriguez/byebug: Debugging in Ruby 2](https://github.com/deivid-rodriguez/byebug)
data/debug.gemspec CHANGED
@@ -24,4 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
26
  spec.extensions = ['ext/debug/extconf.rb']
27
+
28
+ spec.add_dependency "irb" # for its color_printer class, which was added after 1.3
27
29
  end
data/exe/rdbg CHANGED
@@ -15,11 +15,18 @@ when :start
15
15
  end
16
16
 
17
17
  ::DEBUGGER__.config_to_env(config)
18
- exec("#{RbConfig.ruby}", "-I#{File.expand_path(File.dirname(__dir__))}/lib", "-r" + start_mode, *ARGV)
18
+
19
+ cmd = config[:command] ? ARGV.shift : RbConfig.ruby
20
+ exec({'RUBYOPT' => "-I#{File.expand_path(File.dirname(__dir__))}/lib -r #{start_mode}"},
21
+ cmd, *ARGV)
19
22
 
20
23
  when :attach
21
24
  require_relative "../lib/debug/client"
22
25
 
26
+ config.each{|k, v|
27
+ DEBUGGER__::CONFIG[k] = v
28
+ }
29
+
23
30
  begin
24
31
  if ARGV.empty? && config[:port]
25
32
  connect [config[:host], config[:port]].compact
data/ext/debug/debug.c CHANGED
@@ -22,7 +22,7 @@ static VALUE rb_cFrameInfo;
22
22
  static VALUE
23
23
  di_entry(VALUE loc, VALUE self, VALUE binding, VALUE iseq, VALUE klass, VALUE depth)
24
24
  {
25
- return rb_struct_new(rb_cFrameInfo, loc, self, binding, iseq, klass, depth, Qnil, Qnil, Qnil);
25
+ return rb_struct_new(rb_cFrameInfo, loc, self, binding, iseq, klass, depth, Qnil, Qnil, Qnil, Qnil, Qnil);
26
26
  }
27
27
 
28
28
  static int
@@ -49,6 +49,7 @@ di_body(const rb_debug_inspector_t *dc, void *ptr)
49
49
  long i;
50
50
 
51
51
  for (i=1; i<len; i++) {
52
+ VALUE loc, e;
52
53
  VALUE iseq = rb_debug_inspector_frame_iseq_get(dc, i);
53
54
 
54
55
  if (!NIL_P(iseq)) {
@@ -56,13 +57,13 @@ di_body(const rb_debug_inspector_t *dc, void *ptr)
56
57
  if (!NIL_P(path) && str_start_with(path, skip_path_prefix)) continue;
57
58
  }
58
59
 
59
- VALUE loc = RARRAY_AREF(locs, i);
60
- VALUE e = di_entry(loc,
61
- rb_debug_inspector_frame_self_get(dc, i),
62
- rb_debug_inspector_frame_binding_get(dc, i),
63
- iseq,
64
- rb_debug_inspector_frame_class_get(dc, i),
65
- INT2FIX(len - i));
60
+ loc = RARRAY_AREF(locs, i);
61
+ e = di_entry(loc,
62
+ rb_debug_inspector_frame_self_get(dc, i),
63
+ rb_debug_inspector_frame_binding_get(dc, i),
64
+ iseq,
65
+ rb_debug_inspector_frame_class_get(dc, i),
66
+ INT2FIX(len - i));
66
67
  rb_ary_push(ary, e);
67
68
  }
68
69
 
@@ -1,3 +1,5 @@
1
+ require_relative 'color'
2
+
1
3
  module DEBUGGER__
2
4
  class Breakpoint
3
5
  attr_reader :key
@@ -55,9 +57,24 @@ module DEBUGGER__
55
57
  ""
56
58
  end
57
59
  end
60
+
61
+ def description
62
+ to_s
63
+ end
64
+
65
+ class << self
66
+ include Color
67
+
68
+ def generate_label(name)
69
+ colorize(" BP - #{name} ", [:YELLOW, :BOLD, :REVERSE])
70
+ end
71
+ end
58
72
  end
59
73
 
60
74
  class LineBreakpoint < Breakpoint
75
+ LABEL = generate_label("Line")
76
+ PENDING_LABEL = generate_label("Line (pending)")
77
+
61
78
  attr_reader :path, :line, :iseq
62
79
 
63
80
  def initialize path, line, cond: nil, oneshot: false, hook_call: true
@@ -186,9 +203,9 @@ module DEBUGGER__
186
203
  oneshot = @oneshot ? " (oneshot)" : ""
187
204
 
188
205
  if @iseq
189
- "line bp #{@path}:#{@line} (#{@type})#{oneshot}" + super
206
+ "#{LABEL} #{@path}:#{@line} (#{@type})#{oneshot}" + super
190
207
  else
191
- "line bp (pending) #{@path}:#{@line}#{oneshot}" + super
208
+ "#{PENDING_LABEL} #{@path}:#{@line}#{oneshot}" + super
192
209
  end
193
210
  end
194
211
 
@@ -198,9 +215,13 @@ module DEBUGGER__
198
215
  end
199
216
 
200
217
  class CatchBreakpoint < Breakpoint
218
+ LABEL = generate_label("Catch")
219
+ attr_reader :last_exc
220
+
201
221
  def initialize pat
202
222
  @pat = pat.freeze
203
223
  @key = [:catch, @pat].freeze
224
+ @last_exc = nil
204
225
 
205
226
  super()
206
227
  end
@@ -208,18 +229,30 @@ module DEBUGGER__
208
229
  def setup
209
230
  @tp = TracePoint.new(:raise){|tp|
210
231
  exc = tp.raised_exception
232
+ should_suspend = false
211
233
  exc.class.ancestors.each{|cls|
212
- suspend if @pat === cls.name
234
+ if @pat === cls.name
235
+ should_suspend = true
236
+ @last_exc = exc
237
+ break
238
+ end
213
239
  }
240
+ suspend if should_suspend
214
241
  }
215
242
  end
216
243
 
217
244
  def to_s
218
- "catch bp #{@pat.inspect}"
245
+ "#{LABEL} #{@pat.inspect}"
246
+ end
247
+
248
+ def description
249
+ "#{@last_exc.inspect} is raised."
219
250
  end
220
251
  end
221
252
 
222
253
  class CheckBreakpoint < Breakpoint
254
+ LABEL = generate_label("Check")
255
+
223
256
  def initialize expr
224
257
  @expr = expr.freeze
225
258
  @key = [:check, @expr].freeze
@@ -231,6 +264,8 @@ module DEBUGGER__
231
264
  @tp = TracePoint.new(:line){|tp|
232
265
  next if tp.path.start_with? __dir__
233
266
  next if tp.path.start_with? '<internal:'
267
+ # Skip when `JSON.generate` is called during tests
268
+ next if tp.defined_class.to_s == '#<Class:JSON>' and ENV['RUBY_DEBUG_TEST_MODE']
234
269
 
235
270
  if safe_eval tp.binding, @expr
236
271
  suspend
@@ -239,21 +274,24 @@ module DEBUGGER__
239
274
  end
240
275
 
241
276
  def to_s
242
- "check bp: #{@expr}"
277
+ "#{LABEL} #{@expr}"
243
278
  end
244
279
  end
245
280
 
246
- class WatchExprBreakpoint < Breakpoint
247
- def initialize expr, current
248
- @expr = expr.freeze
249
- @key = [:watch, @expr].freeze
281
+ class WatchIVarBreakpoint < Breakpoint
282
+ LABEL = generate_label("Watch")
283
+
284
+ def initialize ivar, object, current
285
+ @ivar = ivar.to_sym
286
+ @object = object
287
+ @key = [:watch, @ivar].freeze
250
288
 
251
289
  @current = current
252
290
  super()
253
291
  end
254
292
 
255
- def watch_eval b
256
- result = b.eval(@expr)
293
+ def watch_eval
294
+ result = @object.instance_variable_get(@ivar)
257
295
  if result != @current
258
296
  begin
259
297
  @prev = @current
@@ -263,7 +301,7 @@ module DEBUGGER__
263
301
  remove_instance_variable(:@prev)
264
302
  end
265
303
  end
266
- rescue Exception => e
304
+ rescue Exception
267
305
  false
268
306
  end
269
307
 
@@ -272,20 +310,25 @@ module DEBUGGER__
272
310
  next if tp.path.start_with? __dir__
273
311
  next if tp.path.start_with? '<internal:'
274
312
 
275
- watch_eval(tp.binding)
313
+ watch_eval
276
314
  }
277
315
  end
278
316
 
279
317
  def to_s
280
- if defined? @prev
281
- "watch bp: #{@expr} = #{@prev} -> #{@current}"
282
- else
283
- "watch bp: #{@expr} = #{@current}"
284
- end
318
+ value_str =
319
+ if defined?(@prev)
320
+ "#{@prev} -> #{@current}"
321
+ else
322
+ "#{@current}"
323
+ end
324
+ "#{LABEL} #{@object} #{@ivar} = #{value_str}"
285
325
  end
286
326
  end
287
327
 
288
328
  class MethodBreakpoint < Breakpoint
329
+ LABEL = generate_label("Method")
330
+ PENDING_LABEL = generate_label("Method (pending)")
331
+
289
332
  attr_reader :sig_method_name, :method
290
333
 
291
334
  def initialize b, klass_name, op, method_name, cond
@@ -345,18 +388,22 @@ module DEBUGGER__
345
388
  retried = false
346
389
  @tp.enable(target: @method)
347
390
 
348
- rescue ArgumentError => e
391
+ rescue ArgumentError
349
392
  raise if retried
350
393
  retried = true
394
+ sig_method_name = @sig_method_name
351
395
 
352
396
  # maybe C method
353
397
  @klass.module_eval do
354
- orig_name = @sig_method_name + '__orig__'
355
- alias_method orig_name, @sig_method_name
356
- define_method(@sig_method_name) do |*args|
398
+ orig_name = sig_method_name + '__orig__'
399
+ alias_method orig_name, sig_method_name
400
+ define_method(sig_method_name) do |*args|
357
401
  send(orig_name, *args)
358
402
  end
359
403
  end
404
+
405
+ # re-collect the method object after the above patch
406
+ search_method
360
407
  retry
361
408
  end
362
409
  rescue Exception
@@ -369,9 +416,9 @@ module DEBUGGER__
369
416
 
370
417
  def to_s
371
418
  if @method
372
- "method bp: #{sig}"
419
+ "#{LABEL} #{sig}"
373
420
  else
374
- "method bp (pending): #{sig}"
421
+ "#{PENDING_LABEL} #{sig}"
375
422
  end + super
376
423
  end
377
424
  end