# Help an Elixir beginner find missing development tooling!

**URL:** <https://forum.elixirforum.com/t/help-an-elixir-beginner-find-missing-development-tooling/24632>\
**Category:** Questions\
**Tags:** troubleshooting\
**Created:** [August 12, 2019, 2:48pm UTC](https://forum.elixirforum.com/t/help-an-elixir-beginner-find-missing-development-tooling/24632 "2019-08-12T14:48:55Z")\
**Posts on this page:** 1\
**Showing post:** 15

<div class="post-metadata">

**Author:** ![OvermindDL1](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/32/2677_2.png) [@OvermindDL1](https://forum.elixirforum.com/u/OvermindDL1)\
**Post date:** [August 14, 2019, 3:30pm UTC](https://forum.elixirforum.com/t/help-an-elixir-beginner-find-missing-development-tooling/24632/15 "2019-08-14T15:30:00Z")

</div>

> [@michallepicki](#):
>
> In debuggers for many languages it’s possible to “break on exception” where the debugger would attach immediately where an exception happened (not anywhere higher up the stack). This is similar to what Ruby’s pry-rescue does and this is what @mike_bianco wants.

Ah, not sure I’ve ever used a language like that outside of stackless python. In C++/OCaml/Rust/Etc… once the stack frame is unwound anything that was existing before is now gone (although with some unsafe pointing munging you can sometimes get some old values, but don’t rely on that at all).

I’m not even sure how that is safe to do without heap-based frames. I’m guessing Ruby uses heap-based frames. The BEAM’s actors use stack-based frames so it is not safe to do such a mapping.

> [@mike\_bianco](#):
>
> Exactly. It’s an incredibly helpful debugging tool in ruby, and I would love to see something like this on the elixir side!

Except on the BEAM by the time the exception is unwound that stack frame is already gone and potentially even GC’d.

> [@hauleth](#):
>
> It should present value of `a` form the place where exception was thrown.

Except that stack frame is gone. If you want bindings from the thrown site then they need to be packaged up into the exception itself, which `binding()` would be great to use for, maybe make a library that has a `dthrow`/`draise` for a decorated throw and raise along with a `dtry` for a decorated exception handler for them? 🙂

> [@hauleth](#):
>
> AFAIK it is not possible at all in Erlang, but this is how `better-errors` does it - it allows you to check values of local variables in place where exception was raised.

What’s `better-errors`? Link please? I’m quite curious. ^.^

---

_[View the full topic](https://forum.elixirforum.com/t/help-an-elixir-beginner-find-missing-development-tooling/24632)._
