erlang中的pstack等效

时间:2016-10-29 14:59:54

标签: erlang pstack

当一个erlang系统挂起时,我想知道系统在那段时间做了什么。对于c / c ++程序,我可以轻松运行pstack。但是我在erlang中没有为此找到一个方便的工具。

所以我的问题是:

  1. erlang中的pstack等价物是什么?
  2. 实际上我想检查以下过程的运行堆栈跟踪。

    " /opt/couchbase/lib/erlang/erts-5.10.4.0.0.1/bin/beam.smp -P 327680 -K true - -root / opt / couchbase / lib / erlang -progname erl --..."

    我启动了一个新的erlang shell并启动webtool并检查appmon但是我无法找到上述应用程序。可能导致这种情况的原因是什么?

  3. 由于

1 个答案:

答案 0 :(得分:1)

关于pstack等效内容,您是否已阅读官方指南中的Erlang Profiling?它为您提供了很多关于如何分析应用程序并找到代码卡在哪里的示例。

另一个有用的工具是observer,它将显示所有工作流程,CPU使用情况,进程堆栈以及更多信息。

如果您没有看到使用这些工具的任何内容,可以尝试使用Erlang debugger

现在关于couchbase,如果您的应用程序当前正在运行,您可以使用Erlang shell连接到它并启动之前引用的命令和应用程序。

我不知道您是单独使用couchbase还是使用couchdb,但是,如果您想在命令行中使用observer或其他工具,则可以couchdb使用{{} 1}}标志:

-i

如果您的应用程序在没有GUI的情况下远程运行,您可以使用etop,它是# -i use the interactive Erlang shell couchdb -i 的CLI替代方案。如果您不想直接从Erlang shell运行它,也可以将observer输出转储到文件中。 IHMO,如果您想了解有关I / O或调试的更多信息,请使用etopeprof和其他分析工具和转储文件(另请参阅eep分析工具,易于使用)。< / p>

另一种选择,如果您使用SSH并希望查看fprof窗口,则可以将X11Forwarding与ssh:observerssh -X $yourserver一起使用,然后只运行{{1在你的Erlang shell中。