Project

General

Profile

Actions

Bug #17492

closed

Breakpoints in debug.rb only work when program invoked with absolute filename

Added by rsharman (Richard Sharman) over 3 years ago. Updated almost 3 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin17]
[ruby-core:101825]

Description

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) Patch Patch for debug.rb (diff-u format) rsharman (Richard Sharman), 12/30/2020 11:58 PM
demo.sh (140 Bytes) demo.sh Script to demonstrate the problem rsharman (Richard Sharman), 12/30/2020 11:58 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0