Как включить отладку сообщений в Juno (редактор Julia)

Документы Джулии довольно ясно показывают, как включить отладку сообщений от @debug макросы, т.е. запустить export JULIA_DEBUG=mymodule или же export JULIA_DEBUG=all в командной строке перед запуском Юлии. Тем не менее, есть ли простой способ включить отладку изнутри Juno, или, в более общем смысле, во время работы Julia?

Я пытался возиться с Base.CoreLogging.disable_logging, Base.CoreLogging.BelowMinLevel а также Base.CoreLogging._min_enabled_level безуспешно.

Я знаю, что могу установить переменные env для Julia в настройках Juno. Но работать с этим немного раздражает, так как требует перезагрузки Джулии. Я действительно хочу иметь следующий рабочий процесс при работе в интерактивном режиме:

  1. Введите строку в REPL
  2. Наткнуться на ошибку из вашего собственного кода, которую вы не ожидали.
  3. Включить отладку.
  4. Запустите эту строку снова.
  5. Смотрите журналы отладки.
  6. Исправьте ваш код.
  7. Снова отключите ведение журнала отладки.

Что, я думаю, лучше, чем обычная практика комментирования и отмены комментариев printf везде.

2 ответа

Включить @debug везде (это повлияет только на код, загруженный после выполнения следующего выражения):

julia>ENV["JULIA_DEBUG"] = "all"

включить @debug в файле foo.jl (согласно документам, не проверял это):

julia>ENV["JULIA_DEBUG"] = "foo"

запрещать @debug:

ENV["JULIA_DEBUG"] = ""

Важное замечание: макросы оцениваются при загрузке кода. Таким образом, приведенные выше приемы будут влиять только на код, который загружается после изменения значения JULIA_DEBUG, Так что после установки его, например, all, ничего не изменится. Перезагрузите модули, которые вы хотите @debug,

Чтобы включить ведение журнала сообщений @debug в вашем скрипте julia:

# ... script ...

ENV["JULIA_DEBUG"]="all"

# debug messages are now enabled.
# ... Rest of the script... 

Добавление ENV["JULIA_DEBUG"]="all" включит сообщения @debug при запуске скрипта в Juno или при запуске с Julia из вашего терминала.

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