Bug #19791
closedDebugger does not handle delete key correctly
Description
When entering the debugger using binding.debugger or the rdbg command, pressing the delete key on the keyboard to delete characters at the REPL merely prints "^[[3~" to the console, and does not actually delete anything. This is very inconvenient. Can this be fixed somehow? I really like the new debugger, but my swearing like a sailor every time I hit "delete" is starting to really annoy my wife...
It is worth noting that if I run the pry command and then, within pry, call binding.debugger, the delete key operates correctly.
I believe the issue is related in some way to readline support, or the lack thereof – but my Ruby installation was compiled with readline support. I've tried everything I can think of, and spent some time on Google trying to solve it, but the problem remains. It happens in Alpine 3.18 and also in Debian 12.
Updated by ima1zumi (Mari Imaizumi) about 2 years ago
Can you tell me what version of debug and Reline you are using? Using the latest version of Reline may solve the problem.
Updated by stuartb (Stuart Bury) about 2 years ago
gem list gives the following output:
*** LOCAL GEMS ***
abbrev (default: 0.1.1)
addressable (2.8.4)
angelo (0.5.1)
base64 (default: 0.1.1)
benchmark (default: 0.2.1)
bigdecimal (default: 3.1.3)
bundler (default: 2.4.17)
byebug (11.1.3)
celluloid (0.18.0)
celluloid-fsm (0.20.5)
celluloid-io (0.17.3)
cgi (default: 0.3.6)
coderay (1.1.3)
csv (default: 3.2.6)
date (default: 3.3.3)
debug (1.8.0)
delegate (default: 0.3.0)
did_you_mean (default: 1.6.3)
digest (default: 3.1.1)
domain_name (0.5.20190701)
drb (default: 2.1.1)
english (default: 0.7.2)
erb (default: 4.0.2)
error_highlight (default: 0.5.1)
etc (default: 1.4.2)
execjs (2.8.1)
fcntl (default: 1.0.2)
ffi (1.15.5)
ffi-compiler (1.0.1)
fiddle (default: 1.1.1)
fileutils (default: 1.7.0)
find (default: 0.1.1)
forwardable (default: 1.3.3)
getoptlong (default: 0.2.0)
haml (6.1.1)
hashie (5.0.0)
http (5.1.1)
http-cookie (1.0.5)
http-form_data (2.3.0)
http_parser.rb (0.8.0)
io-console (default: 0.6.0)
io-nonblock (default: 0.2.0)
io-wait (default: 0.3.0)
ipaddr (default: 1.2.5)
irb (default: 1.6.2)
json (default: 2.6.3)
livescript (2.4.0)
livescript-source (1.5.0)
llhttp-ffi (0.4.0)
logger (default: 1.5.3)
method_source (1.0.0)
mime-types (3.4.1)
mime-types-data (3.2023.0218.1)
msgpack (1.7.2)
mustermann (3.0.0, 0.4.0)
mutex_m (default: 0.1.2)
net-ftp (0.2.0)
net-http (default: 0.3.2)
net-ping (2.0.8)
net-protocol (default: 0.2.1)
net-ssh (7.1.0)
nio4r (2.5.9)
nkf (default: 0.1.2)
nokogiri (1.15.3 x86_64-linux)
observer (default: 0.1.1)
open-uri (default: 0.3.0)
open3 (default: 0.1.2)
openssl (default: 3.1.0)
optparse (default: 0.3.1)
ostruct (default: 0.5.5)
pathname (default: 0.2.1)
pp (default: 0.4.0)
prettyprint (default: 0.1.1)
pry (0.14.2)
pry-byebug (3.10.1)
pry-nav (1.0.0)
pstore (default: 0.1.2)
psych (default: 5.0.1)
public_suffix (5.0.3)
racc (default: 1.6.2)
rake (13.0.6)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
rdoc (default: 6.5.0)
readline (default: 0.0.3)
readline-ext (default: 0.1.5)
reel (0.6.1)
reline (default: 0.3.2)
resolv (default: 0.2.2)
resolv-replace (default: 0.1.1)
rinda (default: 0.1.1)
ruby-terminfo-r3 (0.1.1)
ruby2_keywords (default: 0.0.5)
rubygems-update (3.4.17)
rubyzip (2.3.2)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (4.0.0)
securerandom (default: 0.2.2)
sequel (5.70.0)
set (default: 1.0.3)
shellwords (default: 0.1.0)
singleton (default: 0.1.1)
sqlite3 (1.6.3 x86_64-linux)
stringio (default: 3.0.4)
strscan (default: 3.0.5)
syntax_suggest (default: 1.0.2)
syslog (default: 0.1.1)
tempfile (default: 0.1.3)
temple (0.10.2)
thor (1.2.2)
tilt (2.2.0)
time (default: 0.2.2)
timeout (default: 0.3.1)
timers (4.3.5)
tmpdir (default: 0.1.3)
tool (0.2.3)
tsort (default: 0.1.1)
un (default: 0.2.1)
unf (0.1.4)
unf_ext (0.0.8.2)
uri (default: 0.12.1)
weakref (default: 0.1.2)
websocket-driver (0.7.5)
websocket-extensions (0.1.5)
yaml (default: 0.2.1)
zlib (default: 3.0.0)
Updated by stuartb (Stuart Bury) about 2 years ago
I just did gem install reline and upgraded it to 0.3.7, but the problem persists.
Updated by stuartb (Stuart Bury) about 2 years ago
After upgrading reline, I uninstalled and reinstalled the debug gem. That seems to have solved the problem.
What can be done to avoid this problem happening again in the future? Perhaps change the debug gem dependencies to require the newer version of reline?
Updated by jeremyevans0 (Jeremy Evans) about 2 years ago
- Status changed from Open to Closed