[#113435] [Ruby master Feature#19634] Pattern matching dynamic key — "baweaver (Brandon Weaver) via ruby-core" <ruby-core@...>
Issue #19634 has been reported by baweaver (Brandon Weaver).
6 messages
2023/05/09
[#113489] [Ruby master Bug#19642] Remove vectored read/write from `io.c`. — "ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>
Issue #19642 has been reported by ioquatix (Samuel Williams).
10 messages
2023/05/15
[ruby-core:113493] [Ruby master Feature#19572] Add a new TracePoint event for rescued exceptions
From:
"st0012 (Stan Lo) via ruby-core" <ruby-core@...>
Date:
2023-05-15 13:06:04 UTC
List:
ruby-core #113493
Issue #19572 has been updated by st0012 (Stan Lo).
We discussed this at the [RubyKaigi dev-meeting](https://bugs.ruby-lang.org/issues/19599) as a topic and I also did a follow up discussion with @ko1. IIRC, the conclusion was:
- This `rescue` event is only for Ruby-level rescue. If there's a need for C-level rescue tracking, we may introduce a `c_rescue` event, but I currently don't have a plan for it.
- Instead of adding `TP#rescued_exception`, @ko1 suggested using the `raised_exception` API for now. Consider `rescue` will likely be used with `raise` together, using the same API to access the exception can simplify implementation, so I agree with it.
- There was no objection in introducing this event.
- @ko1 was ok with adopting it in `ruby/debug`'s `ExceptionTracer`.
@ko1 is there anything I missed or you may want to add?
----------------------------------------
Feature #19572: Add a new TracePoint event for rescued exceptions
https://bugs.ruby-lang.org/issues/19572#change-103078
* Author: st0012 (Stan Lo)
* Status: Open
* Priority: Normal
----------------------------------------
**Summary**
Support a new `rescue` event type in TracePoint. When the event is triggered, `TracePoint#rescued_exception` can be used to access the exception.
**Reason**
Currently, TracePoint supports `raise` events, which can be helpful for debugging by showing which exception occurs at which location. By adding a `rescue` event type, we can improve the developer's debugging experience by making it easier to check where an exception is rescued.
Currently, the most effective way to check where an exception is rescued involves setting a breakpoint at the exception's raised location and stepping through the code to see whether the debugger stops inside a rescue block. However, this can be a tedious process, especially in large applications with deep call stacks. By using a TracePoint event for rescue, developers can easily track exceptions as they are rescued by adding a few lines of code:
```
TracePoint.trace(:rescue) do |tp|
puts "Exception rescued: #{tp.rescued_exception} at #{tp.path}:#{tp.lineno}"
end
```
This new TracePoint event will also improve the `ruby/debug`'s [`ExceptionTracer`](https://github.com/ruby/debug/blob/master/lib/debug/tracer.rb#L150-L166) and provide users with a better debugging experience.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- [email protected]
To unsubscribe send an email to [email protected]
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/