From: jean.boussier@... Date: 2021-05-14T15:15:52+00:00 Subject: [ruby-core:103847] [Ruby master Feature#17863] rewrite lib/debug.rb with latest API Issue #17863 has been updated by byroot (Jean Boussier). I tried it with our app, and it crashes weirdly, maybe because of `Thread.report_on_exception = true`? ``` (rdbg) c # terminated with exception (report_on_exception is true): ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/source_repository.rb:13:in `read': No such file or directory @ rb_sysopen - eval (Errno::ENOENT) from ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/source_repository.rb:13:in `add' from ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/session.rb:825:in `on_load' from ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/session.rb:88:in `block in initialize' ["~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/thread_client.rb", 599, #, ["~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/source_repository.rb:13:in `read'", "~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/source_repository.rb:13:in `add'", "~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/session.rb:825:in `on_load'", "~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/session.rb:88:in `block in initialize'"]] ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/source_repository.rb:13:in `read': No such file or directory @ rb_sysopen - eval (Errno::ENOENT) from ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/source_repository.rb:13:in `add' from ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/session.rb:825:in `on_load' from ~/.gem/ruby/3.0.1/gems/debug-1.0.0.beta3/lib/debug/session.rb:88:in `block in initialize' ``` ---------------------------------------- Feature #17863: rewrite lib/debug.rb with latest API https://bugs.ruby-lang.org/issues/17863#change-91966 * Author: ko1 (Koichi Sasada) * Status: Open * Priority: Normal ---------------------------------------- I rewrite lib/debug.rb (called old debug.rb) with recent TracePoint APIs (called new debug.rb). It has several incompatibility but maybe nobody uses lib/debug.rb so there is no compatible issues. In fact I tried several features of lib/debug.rb and it doesn't work nowaday. You can see the doc on https://github.com/ruby/debug Compare with existing other debuggers, it has several advantages: * Fast: No performance penalty on non-stepping mode and non-breakpoints. * Remote debugging: Support remote debugging natively. * UNIX domain socket * TCP/IP * VSCode/DAP integration (TODO) * Extensible: application can introduce debugging support with several methods * By `rdbg` command * By loading libraries with `-r` command line option * By calling Ruby's method explicitly * Misc * Support threads (almost done) and ractors (TODO). * Support suspending and entering to the console debugging with `Ctrl-C` at most of timing. * Show parameters on backtrace command. And do not need to write it on Gemfile because it will be a default gem from Ruby 3.1. Important differences: * `require 'debug'` is only a way to enable old debug.rb, but new debug.rb can be enabled with: * require * `rdbg` command (like bybug) * `binding.bp` method like `binding.irb` * Support remote debugging * Support several options like non-stop mode and so on * old debug.rb evaluate unrecognized command as Ruby script, but new debug.rb doesn't allow this spec. * `obj.foo` will be evaluated as Ruby script on old debug.rb (and byebug) * new debug.rb shows `unknown command` because it is typo safe and extension safe. * To see the result, you need to use `p` command like `p obj.foo`. Now you can try on 2.6-master with `gem install debug --pre`. -- https://bugs.ruby-lang.org/ Unsubscribe: