在erlang otp的开发中,如果调用第三方的应用,会有有些错误会不打印栈信息,因为有可能第三方应用会catch然后输出自己的错误信息,所以对排查bug有很大的阻碍,这样就要求我们自己打印调用的栈信息。用这个函数:erlang:process_display (self (),?backtrace).需要注意这个函数只会输出到标准错误输出。
也可以用这个函数:erlang:get_stacktrace ().平时调用他总是打印出空的数组,
这个函数只能在有异常的情况才能调用:
try throw (asdf) catch R -> io:format ("=============~p~n", [erlang:get_stacktrace()]), io:format ("=============~p~n", [R]) end
?
原文:http://wudixiaotie.iteye.com/blog/2223490