Эквивалент pstack в эрланге

Когда зависает система erlang, я хочу знать, что система делает в это время. для программы ac / C++ я могу легко запустить pstack. но я не нашел для этого удобного инструмента в эрланге.

так что мой вопрос:

  1. что такое эквивалент 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, однако я не могу найти вышеуказанное приложение. что может вызвать это?

Спасибо

1 ответ

Что касается pstack эквивалент, вы читали Erlang Profiling из официального руководства? Это дает вам много примеров того, как профилировать ваше приложение и найти, где ваш код застрял.

Еще один полезный инструмент observer он покажет весь рабочий процесс, использование процессора, стек процессов и много дополнительной информации.

Если вы ничего не видите с этими инструментами, вы можете попробовать с отладчиком Erlang.

Теперь, что касается couchbase, если ваше приложение в данный момент запущено, вы можете подключиться к нему с помощью оболочки Erlang и запустить предыдущие указанные команды и приложения.

Я не знаю, используете ли вы couchbase один или с couchdb, но, если вы хотите использовать observer или другие инструменты из командной строки, вы можете запустить couchdb с -i флаг:

# -i use the interactive Erlang shell
couchdb -i

Если ваше приложение запускается удаленно без графического интерфейса, вы можете использовать etop это альтернатива CLI observer, Вы также можете сбросить etop вывод в файл, если вы не хотите запускать его прямо из оболочки Erlang. IHMO, если вы хотите получить больше информации относительно ввода-вывода или отладки, используйте eprof, fprof и другие инструменты профилирования с файлом дампа (см. также eep инструмент профилирования, простой в использовании).

Другой вариант, если вы используете SSH и хотите увидеть observer окно, вы можете использовать X11Forwarding с ssh: ssh -X $yourserver или же ssh -Y $yourserver и просто беги observer:start(). в вашей оболочке Erlang.

Другие вопросы по тегам