Как включить отладку сообщений в 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. Но работать с этим немного раздражает, так как требует перезагрузки Джулии. Я действительно хочу иметь следующий рабочий процесс при работе в интерактивном режиме:
- Введите строку в REPL
- Наткнуться на ошибку из вашего собственного кода, которую вы не ожидали.
- Включить отладку.
- Запустите эту строку снова.
- Смотрите журналы отладки.
- Исправьте ваш код.
- Снова отключите ведение журнала отладки.
Что, я думаю, лучше, чем обычная практика комментирования и отмены комментариев 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
из вашего терминала.