Bug #14702

On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq

Added by (Makoto Tajitsu) over 2 years ago. Updated over 1 year ago.

Target version:
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]


On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

Steps to reproduce

Ruby version.

$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]

The example with yomikomu gem which is simply used load_iseq and load_from_binary method to load file quickly is following.

$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

> require 'yomikomu'

> load '/path/to/somefile.rb'
# no tracepoint callback for line event

Result of reproduce process

tracepoint callback isn't called on loaded file by using load_iseq and load_from_binary.

Expected result and the reason why you expect

tracepoint callback should be called for any loaded file to debug with debugguer(e.g. byebug).

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after require 'yomikomu'.

Also available in: Atom PDF