【发布时间】:2011-01-16 03:47:08
【问题描述】:
我需要调试外部系统中的一些模块。该模块具有公共功能foo() - 我怎么知道位置(模块和功能名称)
从哪个 foo() 给定模块被调用?我的意思是调用堆栈。
我无法停止系统,我可以通过重新加载此模块来完成所有工作(但需要一些调试信息)。
-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
【问题讨论】:
-
我修改了我的例子,请评论
-
请注意,在上面的示例中,对 given:foo() 的调用是尾调用 - 这意味着堆栈上不会留下任何痕迹(根据定义)。如果你需要做这种调试,你应该学习 Erlang 中的跟踪。