-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support IRB console #1024
Support IRB console #1024
Conversation
879d442
to
b9234cc
Compare
b9234cc
to
85fa62a
Compare
Excited for this one! 😁 |
17abf5e
to
85fa62a
Compare
c104241
to
ad82b01
Compare
Is this intentional?
and
( |
For the remote connection, hmm... ignore this option? |
0baae2e
to
ec76862
Compare
@ko1 great catch on the doc and remote mode issue. I've fixed both now.
Yes this is expected. The |
ec76862
to
2165a70
Compare
This is why I could not allow to input Ruby expression directly (and allow with Reline prompt changing). |
Thanks for raising this 🙏 I talked to a few users during RubyConf and some said they did experience the issue before. |
It is one idea. How to know the string is debug command or not? |
2165a70
to
ad8ea78
Compare
This means that user will get an IRB session that has access to the debug commands too by activating IRB's debug integration automatically: https://github.com/ruby/irb#debugging-with-irb
The required IRB version only supports 2.7+
ad8ea78
to
f282982
Compare
@ko1 In IRB I've bumped the PR's IRB requirement to Screen.Recording.2023-12-04.at.21.41.35.mov |
Thank you. It's great. |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [debug](https://github.com/ruby/debug) | `1.8.0` -> `1.9.0` | [![age](https://developer.mend.io/api/mc/badges/age/rubygems/debug/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/rubygems/debug/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/rubygems/debug/1.8.0/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/rubygems/debug/1.8.0/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>ruby/debug (debug)</summary> ### [`v1.9.0`](https://github.com/ruby/debug/releases/tag/v1.9.0) [Compare Source](https://github.com/ruby/debug/compare/v1.8.0...v1.9.0) #### What's Changed - Configuration - `session_name` config by [@​ko1](https://github.com/ko1) in [https://github.com/ruby/debug/pull/1036](https://github.com/ruby/debug/pull/1036) - CLI - Require Reline 0.3.8+ to avoid frozen issue by [@​st0012](https://github.com/st0012) in [https://github.com/ruby/debug/pull/1020](https://github.com/ruby/debug/pull/1020) - Fix prompt list size and colorized code line size to match input line size passed to Reline by [@​tompng](https://github.com/tompng) in [https://github.com/ruby/debug/pull/1010](https://github.com/ruby/debug/pull/1010) - Fix broken command history when executing debugger on irb by [@​takatea](https://github.com/takatea) in [https://github.com/ruby/debug/pull/997](https://github.com/ruby/debug/pull/997) - Drop patch for Reline 0.2.7 by [@​st0012](https://github.com/st0012) in [https://github.com/ruby/debug/pull/1022](https://github.com/ruby/debug/pull/1022) - Support IRB console by [@​st0012](https://github.com/st0012) in [https://github.com/ruby/debug/pull/1024](https://github.com/ruby/debug/pull/1024) - Remote - Allow TracePoint reentry during DAP's evaluation by [@​st0012](https://github.com/st0012) in [https://github.com/ruby/debug/pull/1026](https://github.com/ruby/debug/pull/1026) - CDP: Add debuggerId field in the RETURN OBJECT of "Debugger.enable" by [@​ono-max](https://github.com/ono-max) in [https://github.com/ruby/debug/pull/1028](https://github.com/ruby/debug/pull/1028) - CDP: disable JavaScript engine based autocompletion by [@​ono-max](https://github.com/ono-max) in [https://github.com/ruby/debug/pull/1029](https://github.com/ruby/debug/pull/1029) - Do not use HEAD request if 1 port by [@​ko1](https://github.com/ko1) in [https://github.com/ruby/debug/pull/1035](https://github.com/ruby/debug/pull/1035) - Show session_name on connection by [@​ko1](https://github.com/ko1) in [https://github.com/ruby/debug/pull/1037](https://github.com/ruby/debug/pull/1037) - Internal - Stop assuming Integer#times is written in C by [@​k0kubun](https://github.com/k0kubun) in [https://github.com/ruby/debug/pull/1015](https://github.com/ruby/debug/pull/1015) - Disable cloned breakpoints trace point events by [@​vinistock](https://github.com/vinistock) in [https://github.com/ruby/debug/pull/1008](https://github.com/ruby/debug/pull/1008) - Unfreeze threads for some object-evaluating commands by [@​st0012](https://github.com/st0012) in [https://github.com/ruby/debug/pull/1030](https://github.com/ruby/debug/pull/1030) - Prevent backtrace from hanging if objects in the backtrace use Thread in inspect by [@​vinistock](https://github.com/vinistock) in [https://github.com/ruby/debug/pull/1038](https://github.com/ruby/debug/pull/1038) - Compile iseq_collector.c logic only on CRuby by [@​eregon](https://github.com/eregon) in [https://github.com/ruby/debug/pull/1039](https://github.com/ruby/debug/pull/1039) - Fix compatibility with Fiber Scheduler. by [@​ioquatix](https://github.com/ioquatix) in [https://github.com/ruby/debug/pull/987](https://github.com/ruby/debug/pull/987) - Do not make a Fiber for commands by [@​ko1](https://github.com/ko1) in [https://github.com/ruby/debug/pull/1044](https://github.com/ruby/debug/pull/1044) - support Ruby 3.3 by [@​ko1](https://github.com/ko1) in [https://github.com/ruby/debug/pull/1045](https://github.com/ruby/debug/pull/1045) - Misc/Doc - Fix ruby warnings by [@​y-yagi](https://github.com/y-yagi) in [https://github.com/ruby/debug/pull/993](https://github.com/ruby/debug/pull/993) - Fix a typo by [@​makenowjust](https://github.com/makenowjust) in [https://github.com/ruby/debug/pull/988](https://github.com/ruby/debug/pull/988) - Update `TrapInterceptor` to avoid assigning to an unused variable by [@​DavidZivk](https://github.com/DavidZivk) in [https://github.com/ruby/debug/pull/985](https://github.com/ruby/debug/pull/985) - remove debug print by [@​ko1](https://github.com/ko1) in [https://github.com/ruby/debug/pull/1043](https://github.com/ruby/debug/pull/1043) - Minor punctuation and grammar fixes by [@​ahangarha](https://github.com/ahangarha) in [https://github.com/ruby/debug/pull/1041](https://github.com/ruby/debug/pull/1041) - Tests - Bump actions/checkout from 3 to 4 by [@​dependabot](https://github.com/dependabot) in [https://github.com/ruby/debug/pull/1014](https://github.com/ruby/debug/pull/1014) #### New Contributors - [@​dependabot](https://github.com/dependabot) made their first contribution in [https://github.com/ruby/debug/pull/1014](https://github.com/ruby/debug/pull/1014) - [@​tompng](https://github.com/tompng) made their first contribution in [https://github.com/ruby/debug/pull/1010](https://github.com/ruby/debug/pull/1010) - [@​takatea](https://github.com/takatea) made their first contribution in [https://github.com/ruby/debug/pull/997](https://github.com/ruby/debug/pull/997) - [@​y-yagi](https://github.com/y-yagi) made their first contribution in [https://github.com/ruby/debug/pull/993](https://github.com/ruby/debug/pull/993) - [@​DavidZivk](https://github.com/DavidZivk) made their first contribution in [https://github.com/ruby/debug/pull/985](https://github.com/ruby/debug/pull/985) - [@​eregon](https://github.com/eregon) made their first contribution in [https://github.com/ruby/debug/pull/1039](https://github.com/ruby/debug/pull/1039) - [@​ahangarha](https://github.com/ahangarha) made their first contribution in [https://github.com/ruby/debug/pull/1041](https://github.com/ruby/debug/pull/1041) - [@​ioquatix](https://github.com/ioquatix) made their first contribution in [https://github.com/ruby/debug/pull/987](https://github.com/ruby/debug/pull/987) **Full Changelog**: ruby/debug@v1.8.0...v1.9.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/powerhome/audiences). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Motivation
Currently, the
irb
command always opens up a fresh IRB session, which means:debug
's commands in this mode.debug
commands, users need to leave the IRB session first, which means losing IRB commands or feature like multi-line input.So in this PR, I enhanced the
irb
command by making it activate IRB's newirb:debug
integration.And if users want to always activate the new IRB console, without constantly typing
irb
command manually, they can achieve this by settingCONFIG[:irb_console]
totrue
.Closes ruby/irb#712
Changes
When the new
irb
command is executed, it will:irb:rdbg
console, which is achieved by replacingdebug
'sUI_LocalConsole
UI with IRB'sIRB::Debug::UI
.debug
gem skip IRB's frames.Context#evaluate
method so when it evaluates IRB commands frozen threads will be temporarily unfroze.Furthermore, if users set
RUBY_DEBUG_IRB_CONSOLE
orCONFIG[:irb_console]
totrue
, then theirb:rdbg
console will be opened automatically in the sessions.Main differences
debug
's commands, instead of just IRB's.debug
's default console.irb:rdbg
console, users get hint when their input is going to be processed as adebug
command:Screen.Recording.2023-12-04.at.21.41.35.mov