Project

General

Profile

Bug #17492

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

Added by rsharman (Richard Sharman) 2 months ago. Updated 5 days ago.

Status:
Open
Priority:
Normal
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
#1

Updated by rsharman (Richard Sharman) 2 months ago

  • Description updated (diff)

Updated by jeremyevans0 (Jeremy Evans) 5 days ago

I've tested this patch and it does appear to fix the issue. The upstream repository (https://github.com/ruby/debug) is still not created or is private. Since debug has been gemified, a fix should be applied to the upstream repository, but since the upstream repository has not been created, there isn't a place to do that currently. hsbt (Hiroshi SHIBATA): are there plans to make the upstream repository work?

debug itself uses continuation and therefore warns when it is loaded. It also has no tests. I'm not sure how often it is used (I've never used it before).

Also available in: Atom PDF