2016-10-29 4 views
1

erlangシステムがハングすると、その間にシステムが何をしているのか知りたい。 c/C++プログラムでは、簡単にpstackを実行できます。私はこの目的のための便利なツールをerlangで見つけられませんでした。erlangのpstack相当

ので、私の質問は以下のとおりです。

  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シェルを起動し、webtoolを起動してappmonをチェックしましたが、上記のアプリケーションは見つかりませんでした。何が原因でしょうか? pstack同等に関する

おかげ

答えて

2

は、あなたが公式ガイドからErlang Profilingを読みましたか?これは、アプリケーションのプロファイルを作成し、コードがどこに行き詰まっているかを示す多くの例を示しています。

もう一つの便利なツールはobserverです。それはすべての作業プロセス、CPU使用量、プロセススタック、さらに多くの情報を表示します。

これらのツールで何も表示されない場合は、Erlang debuggerを試してみてください。

あなたのアプリケーションが現在実行中の場合は、Erlang shellで接続し、以前に引用したコマンドとアプリケーションを起動できます。

# -i use the interactive Erlang shell 
couchdb -i 

で:

コマンドラインからobserverまたは他のツールを使用したい場合、私は、あなたが単独で、またはCouchDBのでのCouchbaseを使用している場合は知らないが、あなたは-iフラグでcouchdbを開始することができますアプリケーションがGUIなしでリモートで実行されている場合は、observerの代替CLIであるetopを使用できます。 Erlangシェルから直接実行したくない場合は、出力ファイルetopをファイルにダンプすることもできます。 IHMO、I/Oまたはデバッグに関する詳細情報が必要な場合は、eprof,fprofなどのダンプファイルを含むプロファイリングツールを使用してください(使いやすいeepプロファイリングツールも参照)。 SSHを使用してobserverウィンドウを表示したい場合

別の方法として、あなたは、SSHでX11Forwardingを使用することができます:ssh -X $yourserverまたはssh -Y $yourserverと単にあなたのErlangのシェルでobserver:start().を実行します。

+0

ありがとうございます!しかし私はまだいくつかの問題があります。私がオブザーバーを試してみると、それはGUIプログラムであることがわかりました。この目的のためにGUI envがありません。 – zhihuifan

+0

ありがとう!しかし、私はまだいくつかの問題があります。私がオブザーバーを試してみると、それはGUIプログラムであることがわかりました。この目的のためにGUI envがありません。 observerwebを使用したい場合は、https://github.com/freecnpro/observerweb/issues/4を発行します。私の理解によれば、何らかのエラー処理があり、それがcouchdbかcouchdb -iかどうかに関わらず、上記のツールで確認できるはずです。私はおそらく間違っている、私は私の知識をリフレッシュしたいので、これを上げる。ありがとう! – zhihuifan

+0

ok、GUIなしのプロファイリングツールに関する詳細情報を含む解答を編集しました。これが助けてくれることを願って! :) –