У меня есть некоторый фон Ruby и Java, и я привык иметь точные числа строк в журналах ошибок.
Итак, если в скомпилированном коде есть ошибка, я увижу количество строк, вызвавших исключение в выводе консоли.
Как в этом примере Ruby:
my_ruby_code.rb:13:in `/': divided by 0 (ZeroDivisionError)
from my_ruby_code.rb:13
Это просто и быстро - я просто перехожу к строке 13 и исправляю ошибку.
Наоборот, Эрланг просто говорит что-то вроде:
** exception error: no match of right hand side value [xxxx]
in function my_module:my_fun/1
in call from my_module:other_fun/2
Нет номеров строк для просмотра.
И если у меня есть две строки, например
X = Param1,
Y = Param2,
в 'my_fun', как понять, в какой строке проблема?
Кроме того, я попытался переключиться на Emacs + Elang-mode из Vim, но единственным бонусом, который я получил до сих пор, является возможность циклически выполнять ошибки компиляции внутри Emacs (C-k `).
Таким образом, процесс написания кода и поиск простых логических ошибок, таких как "отсутствие соответствия правой стороны", кажется немного громоздким.
Я попытался добавить в код много строк "io: format", но это дополнительная работа, требующая времени.
Я также попытался использовать distel, но для этого нужно всего 10 шагов, чтобы только один раз отлаживать отладчик.
Вопросы:
- Какой самый простой и простой способ отладки кода Erlang?
- Есть ли эрланговый режим Emacs с улучшением в плане развития Erlang по сравнению с Vim?
- Какой цикл "write-compile-debug" вы предпочитаете? Вы оставляете Emacs для компиляции и запуска кода в терминале? Как искать ошибки в коде Erlang?