В общем, нет.Erlang .beam-файлы не содержат номеров строк исходного кода, поэтому трудно определить, в какой строке возникла проблема.У меня есть несколько макросов, которые я использую в своем проекте, включая "log.hrl"
:
-define(INFO(T), error_logger:info_report(T)).
-define(WARN(T), error_logger:warning_report(
[process_info(self(), current_function), {line, ?LINE} | T])).
-define(ERR(T), error_logger:error_report(
[process_info(self(), current_function), {line, ?LINE} | T])).
-define(DEBUG(Format, Args), io:format("D(~p:~p:~p) : "++Format++"~n",
[self(),?MODULE,?LINE]++Args)).
-define(DEBUGP(Args), io:format("D(~p:~p:~p) : ~p~n",
[self(),?MODULE,?LINE, Args])).
, и это дает вам несколько строк журнала в программе для поиска.Для отладки я также часто использую инструмент redbug из набора eper :
https://github.com/massemanet/eper
Он позволяет отслеживать в режиме реального времени всякий раз, когдапроисходит звонок:
Eshell V5.8.3 (abort with ^G)
1> redbug:start("erlang:now() -> stack;return", [{time, 60*1000}]).
ok
2> erlang:now().
{1297,183814,756227}
17:50:14 <{erlang,apply,2}> {erlang,now,[]}
shell:eval_loop/3
shell:eval_exprs/7
shell:exprs/7
17:50:14 <{erlang,apply,2}> {erlang,now,0} -> {1297,183814,756227}
3>
Надеюсь, это поможет.