inspecting the call stack from a program (was: Re: Extending Functionality: an expedient and questionable approa ch)
Shawn Pearce
spearce@REDACTED
Wed Mar 19 20:17:17 CET 2003
Chris Pressey <cpressey@REDACTED> wrote:
> Sorry... I should have been more specific. I meant - a way for a program
> to inspect the call stack.
>
> I'm currently using this function:
>
> call_stack() ->
> {'EXIT', {Error, CallStack}} = (catch 1 = 2),
> tl(CallStack).
>
> I find this useful in conjunction with e.g. logging (e.g. in
> /jungerl/lib/ce/src/ce_log.erl)
>
> It's just that the "(catch 1 = 2)" strikes me as, uhm, ungraceful :)
So then use
{'EXIT', {Error, CallStack}} = (catch 1 = undefined),
:-)
This is like the old Java trick of throwing an exception, catching it,
printing it to a stream, parsing the stream to locate the text of
the method you want, and pulling that back into a variable. Oh wait,
its still cleaner in Erlang.
--
Shawn.
* woot is now known as woot-dinner
* Knghtbrd sprinkles a little salt on woot
<Knghtbrd> I've never had a woot before... Hope they taste good
<woot-dinner> noooo!
<woot-dinner> don't eat me!
* Knghtbrd decides he does not want a dinner that talks to him... hehe
More information about the erlang-questions
mailing list