Более легкий и также не зависит от формата StackTrace, который может изменить время от времени, я бы предпочел использовать process_info/2
:
{_, {Module, Function, Arity}} = process_info(self(), current_function)
В Function
вы найдете имя функции, как атом, и вы получите Module
и Arity
также. Вы не можете записать эту функцию как функцию, потому что она просто вернет эту функцию как текущую. Макрос, который дает вам текущее имя функции как атом может выглядеть следующим образом:
-define(current_function_name(),
element(2, element(2, process_info(self(), current_function)))).
foo() ->
foo = ?current_function_name().
возможно дубликат [Как получить имя функции] (http://stackoverflow.com/questions/4915339/how- в-получить-имя-в-а-функции) –