Какой самый простой способ отладить код Scala, управляемый sbt, с помощью встроенного отладчика IntelliJ? В документации от «RunningSbt» с сайта sbt google code перечислены команды для запуска основного класса проекта или тестов, но, похоже, нет команд для отладки.
Последующий вопрос: какой самый простой способ подключить отладчик IntelliJ к Jetty при использовании команды sbt jetty-run?
scala
intellij-idea
jetty
sbt
Мэтью
источник
источник
Ответы:
Для обычной отладки в IntelliJ вы можете использовать конфигурацию запуска / отладки приложения обычным способом, независимо от того, используете ли вы sbt для компиляции кода.
Чтобы подключиться к приложению, работающему в Jetty, вам необходимо создать конфигурацию удаленной отладки. Когда вы это сделаете, IntelliJ предоставит вам набор аргументов командной строки для запуска удаленной JVM - что-то вроде
Запустите sbt с этими аргументами, а затем выполните
jetty-run
. Наконец, запустите конфигурацию удаленной отладки в IntelliJ. Эта ветка может быть полезна.источник
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
jetty-run
в командной строке sbt.sbt -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
?sbt -jvm-debug 5005
.В
-jvm-debug
официальных пакетах SBT для Mac, Linux и Windows есть очень удобный флаг . Вы можете использовать флаг, чтобы указать порт отладки:По сути , это запускает JVM для SBT с типичной вербальной отладкой:
Теперь вы можете запускать свой код как обычно, например, с помощью
run
команды sbt .Настройка IntelliJ для подключения к работающему коду ...
Теперь вы подключаете IntelliJ к вашему запущенному процессу, используя конфигурацию удаленной отладки . Обратите внимание, что три верхних поля в этой форме, хотя и пугающие, предназначены только для того, чтобы вы могли скопировать текст из , а не в (они дают подробное заклинание отладки, указанное выше, которое
-jvm-debug
уже позаботится о вас) - единственная конфигурация Вы можете изменить это вSettings
разделе на полпути вниз:источник
-jvm-debug
параметр, и отправить его как запрос на перенос - у вас есть хорошие шансы принести пользу всем, кто находится на той же платформе.У меня тоже были проблемы с этим, поэтому, рискуя быть слишком подробным, вот что я сделал:
НАСТРОИТЬ
Создайте конфигурацию запуска для sbt jetty-run
Создайте конфигурацию отладки для удаленной отладки
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
(не забудьте нажать OK, чтобы создать конфигурацию)Настройте плагин sbt для запуска указанных выше параметров vm
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
в поле параметров виртуальной машины после тех, которые уже естьDEBUGGING
источник
sbt -jvm-debug 5005 console
, затем устанавливаю точку останова в intelllJ Idea, запускаю отладку.sbt -jvm-debug 5005 console
у меня не сработало, но сработалоsbt -jvm-debug 5005
.Это работает у меня каждый раз, и единственное, что вам нужно настроить, - это удаленная отладка в IntelliJ; Я запускаю SBT с параметрами JVM с терминала в IntelliJ:
После этого я могу начать удаленную отладку на localhost: 5005
источник
Я добавляю здесь еще один ответ, потому что я нашел этот вопрос при поиске связанной проблемы: отладка тестовых классов с использованием точек останова.
Я использую ScalaTest и обычно запускаю набор с помощью команды sbt 'test-only'. Теперь, когда я хочу использовать интерактивный отладчик, я могу сделать следующее:
Создайте новую конфигурацию запуска / отладки типа «ScalaTest», введите основное имя «Test Class:» и выберите «Перед запуском: выполнить действие SBT« test-compile »». Вот и все, теперь вы можете разместить точки останова в тестовых источниках и запустить эту конфигурацию.
источник
Ни один из этих ответов или предоставленных ссылок не помог мне, поэтому, как только я понял это, я решил, что поделюсь ...
включая понимание предыстории, которого у меня не было, когда я начал ...
Это основано в основном на приведенных здесь инструкциях, но с дополнительными пояснениями, которые помогли мне пройти через это.
Моя среда: Scala 2.10.2, SBT 0.13 и IntelliJ 13.1
Задний план:
Что такое отладка?
Что такое удаленная отладка?
Ссылаясь на ссылку выше, могут быть полезны следующие пояснения / изменения:
источник
Я тоже боролся с отладкой в Windows с помощью приложения Spray-can / Akka / Scala, созданного через SBT с использованием Intellij. Собрав воедино различные предложения, самым простым подходом для меня было:
Убедитесь, что у вас есть sbt.Revolver в файле project / plugsin.sbt, например
addSbtPlugin ("io.spray"% "sbt-revolver"% "0.7.1")
Установите javaoptions в файле build.sbt:
javaOptions: = Seq ("- Xdebug", "-Xrunjdwp: transport = dt_socket, server = y, suspend = y, address = 5005")
В частности, используйте параметр suspend = y. Это будет удерживать приложение, пока вы не подключите удаленный отладчик из Intellij.
Настройте конфигурацию отладчика в Intellij через меню Run / Edit Configurations. Нажмите кнопку +, выберите опцию «Remote». Убедитесь, что записи соответствуют указанным выше javaoptions, в частности, адресу порта 5005. Дайте конфигурации имя, например, «Spray».
На консоли SBT используйте команду перезапуска. Вы должны увидеть адрес порта 5005 в выходных данных обратной связи.
В Intellij установите точки останова.
В Intellij выберите Run \ Debug 'Spray'. Он должен подключиться к веб-серверу аэрозольных баллончиков. Вы должны увидеть много потоков в окне отладки.
Помните, что некоторые из директив Get в Spray, похоже, выполняются при запуске, но не повторно при вызове веб-сайта.
источник
Используя Scala 2.10 и SBT 0.12, у меня получилось так: http://tuliodomingos.blogspot.com.es/2014/01/scala-remote-debugging-in-sbts-jetty.html
источник
Для чего стоит Windows, отредактируйте
%SBT_HOME%\bin\sbt.bat
и найдите следующие строки кода:затем замените их этим кодом:
Лучшее, что я могу сделать, чтобы добиться такого же поведения
-jvm-debug
при просмотре в средстве запуска сценариев BashNB. Я не думаю, что на
%SBT_HOME%
самом деле существует вне этого скрипта, если вы явно не создали его в своей среде, но в любом случае вы поняли: Dисточник
Файл-> Настройки-> Другие настройки-> Параметры SBT VM -Xmx512M -XX: MaxPermSize = 256M -Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspend = n, address = 5005
Выполнить-> Изменить конфигурации Нажмите +, а затем выберите удаленный Нажмите Применить
Теперь в консоли SBT (запущенной внутри intelliJ) при выполнении команды 'run' вы увидите "Прослушивание транспорта dt_socket по адресу: 5005"
Теперь нажмите Run-> Debug. Вы увидите, что меню отладки ниже активированы. В нем есть две вкладки Отладчик и Консоль.
Используйте F7 для перехода от следующей строки к следующей
Я выбрал Suspend. Поскольку это было y, когда я запустил команду запуска, он застрял
источник
попробуй это
источник
У меня тоже возникла такая же проблема, хочу поделиться, как я решил. Кстати, я использую Ubuntu 14.04 и IntelliJ 15.
В Настройки -> SBT -> Вставить строку ниже в текстовом поле Параметры ВМ:
-XX: MaxPermSize = 384M -Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspend = n, address = 5005
Открыл Termilal в IntelliJ и запустил:
sbt -jvm-debug 5005
Примечание: вы должны увидеть в терминале такую строку: «Прослушивание транспорта dt_socket по адресу: 5005»
Изменить конфигурации -> Нажмите + -> Выберите «Удаленный»
Выберите DebugMyModule в
Edit Configurations
списке и нажмите Debug .Примечание. Вы должны увидеть открытое представление отладки, а в консоли отладки вы должны увидеть «Подключено к целевой виртуальной машине, адрес:,
'127.0.0.1:5005'
транспорт: 'сокет'»Поместите точки останова в несколько тестовых случаев в своем Testclass.
Зайдите в Терминал, где вы запускаете "
sbt -jvm-debug 5005
" и запустите, как показано нижеНапример: com.myproject.module.AddServiceTest [Spec]
Вы можете увидеть, что отладка началась в контрольной точке вашего тестового примера.
источник
Плагин AttachMe IntelliJ - это потенциально более быстрый способ подключения отладчика без необходимости возиться с номерами портов:
Сообщение в блоге и файл readme содержат инструкции по настройке, однако мне пришлось немного изменить их, чтобы они работали на моей машине.
Скачать
installer.sh
скрипт из официального репоchmod u+x installer.sh
./installer.sh
/.config/attachme/agent.jar
и создать~/.attachme
файлИзменить,
~/.attachme
чтобы содержатьУстановите соответствующий плагин Attachme и перезапустите:
IntelliJ | Preferences | Plugins
Attachme
конфигурацию запуска:Run | Edit configurations... | Add new configuration | Attachme debugger registry | OK
После этих разовых махинаций мы можем автоматически подключить отладчик,
Attachme
настройку запускаsource ~/.attachme
sbt "runMain example.Hello"
источник
В соответствии с ответом Роберто Тайли выше, но в Windows нам также необходимо установить следующие переменные среды после установки sbt:
SBT_HOME
C: \ Program Files (x86) \ sbt \
[или там, где установлен sbt]
SBT_OPTS
-Xdebug -runjdwp: transport = dt_socket, server = y, suspend = n, address = 5005
[по примеру RT IntelliJ]
Добавить в путь:% SBT_HOME% \ bin;% SBT_OPTS%
Затем выполните следующую команду в командной строке в папке проекта «sbt run -jvm -debug 5005».
Если это работает правильно, командная строка сначала выведет строку «Прослушивание транспорта dt_socket по адресу: 5005».
Установите точку останова в IntelliJ.
Откройте веб-сайт в браузере, чтобы активировать точку останова отладчика, например « http: // localhost: 9000 / ».
источник