2014-09-01 4 views
5

Есть ли отладчик трассировки, например dbg, доступный для Haskell или OCaml?Есть ли отладчик трассировки типа `dbg` для Haskell или OCaml?

Очень неформально, это отладка в формате printf только лучше, полностью настраиваемая во время выполнения. По сути, пользователь может зарегистрировать обработчик трассировки при запуске системы, который будет вызываться для каждого действия из набора действий, поддерживаемых средой выполнения (например, при каждом вызове/возврате функции) на каждое отправленное/полученное сообщение и т. Д.). , Такой обработчик может регистрировать каждую операцию, что дает приятную последовательность всех шагов, происходящих в (части) системы.

Этот механизм может использоваться для регистрации/отладки, профилирования определенных частей системы, но во многих случаях просто для того, чтобы узнать, как работает новая (неизвестная для программиста) система.

+0

'ocamldebug' не имеет отлаживаемого стиля трассировки, о котором вы говорите, но поддерживает точки останова и время проезда. Существует также профилирующая поддержка из дополнительных инструментов/флагов. – nlucaroni

+1

Хотя сам отладчик не является отладчиком, верхний уровень OCaml имеет '# trace' и' # install_printer', которые могут пройти долгий путь. – Nikos

ответ

4

Для Haskell GHCi обеспечивает простой отладочный отладчик стиля. Посмотрите, что это documentation, чтобы найти более подробную информацию об этом. Некоторые его особенности являются

  • Возможность установки точки останова
  • Пошаговое исполнение
  • Проверка локальных переменных
  • Обработка исключений в качестве точки останова
  • Typing в любом коде, чтобы выполнить его немедленно
+0

Действительно. Для записи я нахожу способность GHCi запускать любой код, который мне нравится из области видимости, с любыми аргументами, которые мне нравятся _far_, более полезным, чем любой набор традиционных инструментов отладки. – AndrewC

+0

(прошу прощения или откат нахальный) – AndrewC

+1

@AndrewC Это нормально. :) Фактически я использую только 'ghci' для функции, которую вы указали. – Sibi