2016-10-29 3 views
1

Wenn ein Erlang System hängt, möchte ich wissen, was das System während dieser Zeit macht. Für ein C/C++ Programm kann ich den Pstack einfach ausführen. aber ich habe in erlang kein praktisches Werkzeug für diesen Zweck gefunden.pstack äquivalent in erlang

so meine Frage lautet:

  1. was ist das pstack äquivalent in erlang?
  2. Eigentlich möchte ich die runing Stack-Ablaufverfolgung des folgenden Prozesses überprüfen.

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

    und ich habe eine neue Erlang-Shell gestartet und starte das Webtool und überprüfe das Programm, aber ich finde die obige Anwendung nicht. was kann das verursachen?

Dank

Antwort

2

pstack Äquivalent betrifft, so haben Sie Erlang Profiling von offiziellen Guide lesen? Es gibt Ihnen viele Beispiele dafür, wie Sie Ihre Anwendung profilieren und wo der Code stecken bleibt.

Ein weiteres nützliches Werkzeug ist observer es wird alle Arbeitsprozesse, CPU-Auslastung, Prozess-Stack und viele weitere Informationen zeigen. Wenn Sie mit diesen Tools nichts sehen, können Sie es mit Erlang debugger versuchen.

Jetzt, wo Ihre Anwendung gerade läuft, können Sie sich mit Erlang shell verbinden und zuvor angegebene Befehle und Anwendungen starten.

Ich weiß nicht, ob Sie allein oder mit couchdb verwenden Couchbase, aber, wenn Sie observer oder andere Werkzeuge von der Kommandozeile verwenden möchten, können Sie couchdb mit -i Flagge starten:

# -i use the interactive Erlang shell 
couchdb -i 

In Wenn Ihre Anwendung remote ohne GUI ausgeführt wird, können Sie etop verwenden, eine CLI-Alternative zu observer. Sie können auch die Ausgabe etop in eine Datei ausgeben, wenn Sie sie nicht direkt von Ihrer Erlang-Shell aus ausführen möchten. IHMO, wenn Sie weitere Informationen über I/O oder Debug benötigen, verwenden Sie eprof, fprof und andere Profiling-Tools mit Dump-Datei (siehe auch eep Profiling-Tool, einfach zu bedienen).

Eine weitere Alternative, wenn Sie SSH verwenden möchten observer Fenster, um zu sehen, können Sie X11Forwarding mit ssh: ssh -X $yourserver oder ssh -Y $yourserver und einfach observer:start(). in Ihrem Erlang-Shell ausführen.

+0

danke! aber ich habe immer noch ein Problem. Wenn ich einen Beobachter ausprobieren möchte, habe ich festgestellt, dass es ein GUI-Programm ist und ich habe zu diesem Zweck keine GUI-Umgebung. – zhihuifan

+0

danke dir! Aber ich habe immer noch ein Problem. Wenn ich einen Beobachter ausprobieren möchte, habe ich festgestellt, dass es ein GUI-Programm ist und ich habe zu diesem Zweck keine GUI-Umgebung. Wenn ich observerweb verwenden möchte, starte ich https://github.com/freecnpro/observerweb/issues/4. über die -i-Flagge, nach meinem Verständnis, wenn es einige Erlang Prozess gibt und egal, ob es couchdb oder couchdb -i ist oder nicht couchdb überhaupt, ich denke, es sollte in der Lage sein, mit dem oben genannten Werkzeug zu verifizieren.Ich liege wahrscheinlich falsch, ich erwähne das nur, weil ich mein Wissen auffrischen möchte. Vielen Dank! – zhihuifan

+0

ok, bearbeitet die Antwort mit mehr Informationen über Profiling-Tool ohne GUI. Hoffe das wird helfen! :) –