[#68478] Looking for MRI projects for Ruby Google Summer of Code 2015 — Tony Arcieri <bascule@...>

Hi ruby-core,

10 messages 2015/03/10

[ruby-core:68380] [Ruby trunk - Feature #10844] TracePoint API needs an event to inform about creating/removing a new frame without calling something

From: deivid.rodriguez@...
Date: 2015-03-02 18:38:45 UTC
List: ruby-core #68380
Issue #10844 has been updated by David Rodr=C3=ADguez.


Don't see anything wrong...

=3Dbegin

~/Work/byebug $ cat backtrace.rb
begin
  Int('hola')
rescue
  local =3D 17
  byebug
  puts local
end

~/Work/byebug $ ruby -Ilib -rbyebug backtrace.rb
(byebug) bt
-->  rescue in <main> at .../Work/byebug/backtrace.rb:6
       <main> at .../Work/byebug/backtrace.rb:1
(byebug) local
17

=3Dend

----------------------------------------
Feature #10844: TracePoint API needs an event to inform about creating/remo=
ving a new frame without calling something
https://bugs.ruby-lang.org/issues/10844#change-51730

* Author: Oleg Sukhodolsky
* Status: Feedback
* Priority: Normal
* Assignee: Koichi Sasada
----------------------------------------
There are some situations when Ruby VM creates a new frame even if there is=
 no calls
E.g. ensure create a new block.
Here is a simple program which shows that the frame is added but no event i=
s reported.
It is important to known about such situations to correctly implement stepp=
ing in debugger.
It would be nice if the api reports about such situations with something li=
ke :start_frame/:end events.
What do you think?

~~~ruby
def actual_stack_size(frames_to_skip=3D3)
  bt =3D Thread.current.backtrace_locations(frames_to_skip)
  bt.size
end
TracePoint.new do |tp|
  printf "%8s %s:%-2d %13s %d\n", tp.event, tp.path, tp.lineno, tp.method_i=
d, actual_stack_size
end.enable

begin
  raise
rescue
  'error'
end
1
~~~

~~~ruby
c_return ruby/debugger/ruby-16236.rb:7         enable 1
    line ruby/debugger/ruby-16236.rb:9                1
    line ruby/debugger/ruby-16236.rb:10               1
  c_call ruby/debugger/ruby-16236.rb:10         raise 1
c_return ruby/debugger/ruby-16236.rb:10         raise 1
  c_call ruby/debugger/ruby-16236.rb:10           new 1
  c_call ruby/debugger/ruby-16236.rb:10    initialize 2
c_return ruby/debugger/ruby-16236.rb:10    initialize 2
c_return ruby/debugger/ruby-16236.rb:10           new 1
  c_call ruby/debugger/ruby-16236.rb:10     backtrace 1
c_return ruby/debugger/ruby-16236.rb:10     backtrace 1
   raise ruby/debugger/ruby-16236.rb:10               1
  c_call ruby/debugger/ruby-16236.rb:12           =3D=3D=3D 2
c_return ruby/debugger/ruby-16236.rb:12           =3D=3D=3D 2
    line ruby/debugger/ruby-16236.rb:12               2
    line ruby/debugger/ruby-16236.rb:14               1
~~~



--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next