Issue #15568 has been reported by baweaver (Brandon Weaver).

----------------------------------------
Misc #15568: TracePoint(:raise)#parameters raises RuntimeError
https://bugs.ruby-lang.org/issues/15568

* Author: baweaver (Brandon Weaver)
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
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')`



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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>