Project

General

Profile

Actions

Bug #17492

closed

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

Added by rsharman (Richard Sharman) almost 4 years ago. Updated over 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 #1

Updated by rsharman (Richard Sharman) almost 4 years ago

  • Description updated (diff)

Updated by jeremyevans0 (Jeremy Evans) almost 4 years 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).

Updated by jeremyevans0 (Jeremy Evans) over 3 years ago

  • Status changed from Open to Closed

@ko1 (Koichi Sasada) 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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0