[ruby-core:75315] [Ruby trunk Bug#10763] do not receive TracePoint event for elsif

From: angarciaba@...
Date: 2016-05-02 20:47:52 UTC
List: ruby-core #75315
Issue #10763 has been updated by Angel Garcia.


Even more strange: the problem disappears if you enclose the condition between parentheses. In the Oleg Sukhodolsky example:

elsif (method2)


----------------------------------------
Bug #10763: do not receive TracePoint event for elsif
https://bugs.ruby-lang.org/issues/10763#change-58442

* Author: Oleg Sukhodolsky
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Here is a simple test which shows that we do not receive TracePoint event for line with elsif, 
and so it is impossible to implement debugger which will be able to set breakpoint on that line
(originally reported agains RubyMine's debugger - https://youtrack.jetbrains.com/issue/RUBY-14452)

~~~ruby
trace = TracePoint.new do |tp|
  printf "%8s %s:%-2d %13s\n", tp.event, tp.path, tp.lineno, tp.method_id
end

def method1; false end
def method2; true end
trace.enable

if method1
  1
elsif method2
  2
end
~~~
Here is an output I'v got with 2.2.0 (the same problem we have with 1.9, 2.0, and 2.1)

~~~ruby
c_return /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:7         enable
    line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:9               
    call /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:5        method1
    line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:5        method1
  return /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:5        method1
    call /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:6        method2
    line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:6        method2
  return /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:6        method2
    line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:12              
c_return -e:1           load
~~~

IMHO any user does expect that it should be possible to set breakpoint on "elsif" to be able to evaluate condition.



-- 
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>

In This Thread

Prev Next