2

Erlang システムがハングアップしたとき、その間にシステムが何をしているか知りたいです。ac/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 シェルを起動し、webtool を起動して appmon を確認しましたが、上記のアプリケーションが見つかりません。何が原因でしょうか?

ありがとう

4

1 に答える 1

2

pstack同等のものについては、 Erlang Profilingを公式ガイドから読みましたか? アプリケーションをプロファイリングし、コードが動かなくなった場所を見つける方法について、多くの例を示します。

もう 1 つの便利なツールはobserver、すべての作業プロセス、CPU 使用率、プロセス スタック、およびその他の多くの情報を表示することです。

これらのツールで何も表示されない場合は、Erlang デバッガーで試すことができます。

カウチベースに関しては、アプリケーションが現在実行されている場合、Erlang シェルを使用してそれに接続し、以前に引用したコマンドとアプリケーションを起動できます。

あなたがcouchbaseを単独で使用しているのか、couchdbと一緒に使用しているのかはわかりませんが、observerコマンドラインからまたは他のツールを使用したい場合はcouchdb-iフラグから始めることができます:

# -i use the interactive Erlang shell
couchdb -i

GUI を使用せずにアプリケーションをリモートで実行する場合はetop、 の CLI 代替である を使用できますobserveretopErlang シェルから直接実行したくない場合は、出力をファイルにダンプすることもできます。IHMO、I/O またはデバッグに関する詳細情報が必要な場合はeproffprofおよびその他のプロファイリング ツールとダンプ ファイルを使用します (eep使いやすいプロファイリング ツールも参照してください)。

別の方法として、SSH を使用していてobserverウィンドウを表示したい場合は、X11Forwardingを ssh: で使用するssh -X $yourserverssh -Y $yourserver、単にobserver:start().Erlang シェルで実行することができます。

于 2016-10-29T18:28:56.000 に答える