[erlang-questions] I need to call unexported functions from the erlang shell

Scott Lystig Fritchie <>
Fri Jun 15 18:50:05 CEST 2007


>>>>> "kw" == =?ISO-8859-1?Q?Claes Wikstr=F6m?= <ISO-8859-1> writes:

kw> I sympathize with Luke here. Debugging live systems, being able to
kw> call non exported functions from the shell is often ... well
kw> necessary.

Now that I've had an Erlang app running in someone else's data center,
I have also run into that situation, and have really wished I could
call non-exported functions.

Would it be any less icky to create a new BIF to work around the
problem?

    erlang:apply(Function::atom(), Args::list(term()))

... where Function must be in the caller's module and thus can act
like any function in a module calling any other function in that
module?  Then each source module would have added (via -include() or
whatever) one more exported function:

    trap_door(Function, Args) ->
        erlang:apply(Function, Args).

I see that Luke keeps mumbling something about the R9C-0 release.
Adding such a BIF to VMs in the field could be, er, an interesting
trick.  :-)

-Scott



More information about the erlang-questions mailing list