Я новичок в Julia, версия 1.39.1, и пытаюсь отладить игрушечный пример функции с помощью Juno IDE (Atom). Мне удалось получить работающий пример из этой документации, но я не мог понять, как чтобы запустить отладчик моего скрипта Julia или моей функции. Этот сайт казался многообещающим, но изображение примера не работает. Связанный вопрос.
Я безуспешно пытался использовать [email protected](outer_prod([1,2,3],[1,1,1]))
.
Как я могу использовать отладчик в моем скрипте или в своей функции?
Какую версию Юлии и Юноны вы используете? В Juno
меню должна быть запись Debug Information
, которая должна содержать всю необходимую информацию. FWIW, ваш точный пример (ввод отладчика с [email protected]
правильный) отлично подходит для меня. — person pproctor schedule 13.01.2020
Юлия (1.39.1), Юнона (1.2.0-1). Когда вхожу в REPL [email protected](outer_prod([1, 2, 3],[1, 1, 1])) ERROR: UndefVarError: outer_prod not defined
. — person pproctor schedule 14.01.2020
Хорошо, теперь он работает, я поставил [email protected](outer_prod(x,y))
в конце моего сценария Джулии. Раньше я пытался ввести эту команду в REPL. Я опубликую то, что я сделал, в качестве ответа, и вы можете сообщить мне, правильный ли это способ использования отладчика. — person pproctor schedule 14.01.2020
[email protected]
не следует использовать в скриптах. Я подозреваю, что ваш код находится в модуле, но REPL не установлен для этого модуля. Поэтому либо правильно квалифицируйте outer_prod
(например, [email protected](MyModule.outer_prod(x,y))
, либо установите REPL на правильный модуль (в правом нижнем углу есть индикатор). — person pproctor schedule 14.01.2020
Хорошо, ваше предложение правильно квалифицировать модуль работал, спасибо. Я думал, что отладчик может работать аналогично Matlab, но похоже, что отлаживать можно только функции. — person pproctor schedule 15.01.2020
Да, но вы можете просто выполнять сценарии верхнего уровня с помощью Ctrl-Enter
, поэтому отладчик здесь не так уж и нужен. — person pproctor schedule 15.01.2020
Если вы хотите научиться отладке в Juno, начните с чего-нибудь простого.
Шаг 1. Очень важно! Сохраните файл в Juno
шаг 2. нажмите кнопку «стоп», чтобы остановить существующий процесс Julia
шаг 3. нажмите кнопку «play», чтобы запустить файл
шаг 4. введите это в REPL
шаг 5. Используйте панель отладчика в Juno
Нет необходимости останавливать и перезапускать текущий процесс Julia. — person pproctor; 13.01.2020
@enter
— это не функция, а макрос. Просто удалите скобки после него и добавьте пробел:@enter foo()
вместо@enter(foo())
. Затем в отладчике вы можете получить справку о том, что делать, набравhelp
.Вызов макросов со скобками полностью допустим:
Meta.parse("@foo(2)") == Meta.parse("@foo 2")
истинно. В некоторых случаях это также очень полезно, потому что вызовы макросов без скобок очень чувствительны к пробелам. — person pproctor; 13.01.2020Как предлагает @pfitzseb в комментариях к вопросу, вы должны квалифицировать свою функцию с ее модулем (в основном скриптом, в котором находится функция), чтобы начать отладку с REPL. Текущий рабочий модуль можно найти в правом нижнем углу Juno IDE. Команда для отладки функции в конкретном модуле:
[email;protected](MyModule.func_name(args))