Issue #10844 has been updated by David Rodrguez.


Sure, most of the issues here were related to unbalanced counts of events: https://github.com/deivid-rodriguez/byebug/issues/16#issuecomment-47673108 All of them are already fixed. The only bug yet to be fixed related to thiswould be this one: https://bugs.ruby-lang.org/issues/10724, https://github.com/deivid-rodriguez/byebug/issues/103

> Yes, byebug doesn't use real stack size but it means it does not provide complete information about the stack :(

Not sure what you mean here. The stack size at any moment in the execution of a thread is a single positive integer, which can be right or wrong. If this number is the correct number, I don't know how it can be more "complete". Can you be more specific and possibily open an issue in byebug with whatever is wrong/missing?

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

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

~~~ruby
def actual_stack_size(frames_to_skip=3)
  bt = 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_id, 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           === 2
c_return ruby/debugger/ruby-16236.rb:12           === 2
    line ruby/debugger/ruby-16236.rb:12               2
    line ruby/debugger/ruby-16236.rb:14               1
~~~



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