Project

General

Profile

Actions

Feature #19572

closed

Add a new TracePoint event for rescued exceptions

Added by st0012 (Stan Lo) about 1 year ago. Updated 9 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:113096]

Description

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 and provide users with a better debugging experience.

Actions

Also available in: Atom PDF

Like0
Like0Like1Like0Like0Like0Like0