erlang调用堆栈 [英] erlang call stack

查看:608
本文介绍了erlang调用堆栈的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在外部系统中调试一些模块,
模块具有公共功能foo() - 我如何知道调用foo()给定模块的位置(模块和函数名称)
?我的意思是一堆电话。



PS:我无法停止系统,所有的工作,我可以通过重新加载此模块(但与som调试信息)

  -module(给定)。 
-export(foo / 0)。

foo() - >
%%这里是我的调试 - 我需要这里(!)知道未知_module:unknown_foo!
好​​的。

---
-module(unknown_module)。
..

unknown_foo() - >
给定:foo()。 %%见上面


解决方案

这是一个简单的技巧: p>

  Trace = try throw(42)catch 42  - > erlang:get_stacktrace()end,
erlang:display(Trace)


i need to debug some module in foreign system, module has public function foo() - how can I know place (module and function name) from which foo() given module was called? I mean stack of calls.

PS: I cannot stop system, all work I can do by reload this module (but with som debug info)

-module(given).
-export(foo/0).

foo() ->
   %% here is my debug - and i need here(!) known about unknown_module:unknown_foo!
   ok.

---
-module(unknown_module).
..

unknown_foo() ->
   given:foo().  %% see above

解决方案

Here's a simple trick:

Trace = try throw(42) catch 42 -> erlang:get_stacktrace() end,
erlang:display(Trace)

这篇关于erlang调用堆栈的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆