Как отлаживать код Erlang?

У меня есть опыт работы с Ruby и Java, и я привык к точному количеству строк в журналах ошибок.

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

Как в этом примере Ruby:

my_ruby_code.rb:13:in `/': divided by 0 (ZeroDivisionError)
    from my_ruby_code.rb:13

Это просто и быстро - я просто перейдите к строке номер 13 и исправьте ошибку.

Напротив, Erlang просто говорит что-то вроде:

** 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

Нет номеров строк, на которые можно было бы смотреть.

А если у меня в "my_fun" есть две строки вроде

X = Param1,
Y = Param2,

, как понять, в какой строке кроется проблема?

Кроме того, я попытался переключиться в режим Emacs + Elang из Vim, но пока что единственный бонус, который у меня есть, это возможность циклически перебирать ошибки компиляции внутри Emacs (Ck `).

Итак, процесс написания кода и поиск простых логических ошибок, таких как «нет совпадения правой стороны», кажется немного обременительным.

Я попытался добавить в код много строк «io: format», но это не так. дополнительная работа, требующая времени.

Я также пробовал использовать distel , но требуется 10 шагов, чтобы просто открыть отладчик один раз.

Вопросы:

  1. Какой самый прямой и простой способ отладки кода Erlang?
  2. Имеет ли erlang-режим Emacs что-то лучшее с точки зрения разработки на Erlang по сравнению с Vim?
  3. Какой цикл разработки «запись-компиляция-отладка» вы предпочитаете? Оставляете ли вы Emacs для компиляции и запуска кода в терминале? Как вы ищите ошибки в коде Erlang?

29
задан Kirill 22 June 2011 в 09:58
поделиться