[ruby-core:104465] [Ruby master Bug#17492] Breakpoints in debug.rb only work when program invoked with absolute filename
From:
merch-redmine@...
Date:
2021-07-01 21:54:57 UTC
List:
ruby-core #104465
Issue #17492 has been updated by jeremyevans0 (Jeremy Evans).
Status changed from Open to Closed
@ko1 has rewritten the debug library (https://github.com/ruby/debug). I've checked that the rewrite fixes this issue. You can also try using the 1.0.0 beta gem. Note that you need to add `require 'debug/run'` to the file use the `rdbg` command line tool in order to start the debug console.
----------------------------------------
Bug #17492: Breakpoints in debug.rb only work when program invoked with absolute filename
https://bugs.ruby-lang.org/issues/17492#change-92722
* Author: rsharman (Richard Sharman)
* Status: Closed
* Priority: Normal
* ruby -v: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin17]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
When using the debugger, as in ruby -r debug, it seems that breakpoints sometimes are honoured and sometimes not. It turns out that it matters how the program is invoked.
For example, when debugging test.rb,
if invoked as
ruby -r debug test.rb
or
ruby -r debug test.rb
if a breakpoint is put in as
b test.rb:10
it is not honoured because the set_trace_func has expanded the filename test.rb.
If, however, the program is invoked as
ruby -r debug $PWD/test.rb
then the breakpoint does work.
When the breakpoint is entered a File.expand_path is done on it, as can be seen when using the “b” command to view breakpoints. So a simple fix is to also call File.expand_path in the set_trace_func method.
```
`bash-5.1$ diff debug.rb{~,}
1104c1104
< DEBUGGER__.context.trace_func event, file, line, id, binding, klass
---
> DEBUGGER__.context.trace_func event, File.expand_path(file), line, id, binding, klass
bash-5.1$
`
```
Enclosed is a patch and a test script demo.sh to run a program with a breakpoint. Without the fix it does not stop at the breakpoint, with it it does.
---Files--------------------------------
Patch (401 Bytes)
demo.sh (140 Bytes)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>