debug
debug copied to clipboard
`-n` and `-e` cannot be used together
Your environment
λ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin22]
λ rdbg -v
rdbg 1.7.1
Describe the bug
I was trying to execute some command with -c and specify a break point using -e so that I don't need to write the script in the rdbg again.
It works but I still need to manually run continue, to avoid this, I thought -n could help. However, after some tests I turns out -n and -e cannot be used together.
My current workaround is to put continue in -e:
rdbg -c -e 'b OpenStruct#initialize'$'\n''continue' -- ruby -rostruct -e 'OpenStruct.new'
To Reproduce
rdbg -n -c -e 'b OpenStruct#initialize' -- ruby -rostruct -e 'OpenStruct.new'
Expected behavior
process won't exit and attached rdbg shell on OpenStruct#initialize, output should look like:
[122, 131] in /usr/local/Cellar/ruby/3.2.2/lib/ruby/3.2.0/ostruct.rb
122| # data = OpenStruct.new(hash)
123| #
124| # data # => #<OpenStruct country="Australia", capital="Canberra">
125| #
126| def initialize(hash=nil)
=> 127| if hash
128| update_to_values!(hash)
129| else
130| @table = {}
131| end
=>#0 OpenStruct#initialize(hash=nil) at /usr/local/Cellar/ruby/3.2.2/lib/ruby/3.2.0/ostruct.rb:127
#1 [C] Class#new at -e:1
# and 1 frames (use `bt' command for all frames)
Stop by #0 BP - Method OpenStruct#initialize at /usr/local/Cellar/ruby/3.2.2/lib/ruby/3.2.0/ostruct.rb:126
Additional context
process exists and prints nothing.
The current -e command feature is not run the command at the beginning, but run the command at the first pausing.
So the current behavior is intentional.
I agree that the current semantics is not easy... Maybe you expect that it is written in ~/.rdbg.
Introduce new option for that?