Project

General

Profile

Actions

Misc #15568

open

TracePoint(:raise)#parameters raises RuntimeError

Added by baweaver (Brandon Weaver) about 5 years ago. Updated about 5 years ago.

Status:
Open
Assignee:
-
[ruby-core:91292]

Description

Currently trying to get the trace.parameters of a method in a raise event will lead to a RuntimeError. I would contend that it should not, and that it would be perfectly valid to ask for the parameters in the case of an exception.

The reason I do this is to see the arguments at the time of exception:

def extract_args(trace)
  trace.parameters.map(&:last).to_h do |name|
    [name, trace.binding.eval(name.to_s)]
  end
end

I've noticed that I can technically "cheat" and get these same values like this:

def extract_args(trace)
  trace.binding.eval('local_variables').to_h do |name|
    [name, trace.binding.eval(name.to_s)]
  end
end

Having the ability to get the parameters in a raise context would be very useful for debugging.

I'm tempted to also suggest TracePoint#local_variables as it would provide additional context in a more exposed way than TracePoint#binding.eval('local_variables')

Actions

Also available in: Atom PDF

Like0
Like0