Подтвердить что ты не робот

IntelliJ IDEA Debugger не работает над проектом Grails

Я не могу отлаживать свой код в Intellij IDEA. Когда режим отладки активен и запущен, но контрольные точки не имеют проверенного "v", который представляет собой допустимую и оставленную точку останова.

Смотрите изображение: http://prntscr.com/1w0owu.

Я действительно ищу в Интернете ответ. Что я должен делать?

4b9b3361

Ответ 1

Я пробовал все упомянутые здесь без успеха. Единственная полезная информация здесь.

В сущности, вы должны отключить разветвленное выполнение, добавив следующее к grails-app/conf/BuildConfig.groovy:

grails.project.fork = [
    test: false,
    run: false
]

Теперь отладка доступна в IntelliJ IDEA Ultimate Edition v.12.1.6 просто обычным Debug без удаленной отладки. Протестировано на Grails 2.3.1, Java 1.7.0_45, 64-разрядной версии Windows 7.

Ответ 2

Попробуйте следующее:

В идее выберите Изменить конфигурации из списка рядом с кнопкой "Запустить". Затем добавьте Удаленный, выберите свое имя и оставите настройки удаленной конфигурации по умолчанию. (порт 5005 и т.д.)

Запустите приложение с консоли, используя

grails run-app --debug-fork

В идее выберите свою конфигурацию из списка и нажмите кнопку отладки, когда информация о дисплее консоли:

Listening for transport dt_socket at address: 5005

Ответ 3

Так как Grails 2.3, разветвленное выполнение для нескольких команд Grails (например, run-app, test-app) было введено. Если вы просто отлаживаете приложение Grails от IntelliJ IDEA, процесс GrailsStarter будет запущен с параметрами отладки. Выход на консоли IDEA будет:

/usr/lib/jvm/default-java/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59935,suspend=y,server=n [...] /opt/idea-IU-133.330/lib/idea_rt.jar org.codehaus.groovy.grails.cli.support.GrailsStarter [...] run-app Connected to the target VM, address: '127.0.0.1:59935', transport: 'socket'

Само приложение будет запущено в отдельном процессе с именем ForkedTomcatServer. Это где ваш код работает и где ваш отладчик должен действительно подключиться.

Для этого установите debug: true в BuildConfig.groovy в конфигурации run grails.project.fork. Просто запустите Grails сейчас из IDEA (не отлаживайте), и вы увидите следующую строку на консоли, когда приложение будет готово обслуживать HTTP-запросы:

Listening for transport dt_socket at address: 5005

Здесь вы хотите направить отдельную конфигурацию удаленного управления . Как только ваш удаленный отладчик подключится, вы получите HTTP-запрос и отладка будет работать.

Вы также можете отключить разветвленное выполнение для компиляции/тестирования/запуска/войны/консоли. Команды Grails полностью устанавливают значение, связанное с вводом команды в grails.project.fork, на false. Но тогда вы потеряете преимущества для разветвленного исполнения, добавленного в Grails 2.3.

Ответ 4

Отладка приложения grails (2.3+) может быть выполнена двумя способами.

1. Простое решение: отключить debug

edit BuildConfig.groovy:

grails.project.fork = [
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...

к

grails.project.fork = [
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
    run: false,

Плюсы:

  • Простой в использовании (и продолжайте разработку)

Минусы:

  • Это устраняет возможность выполнения замены кода во время выполнения. Это означает, что если вы измените код, он больше не будет автоматически загружаться, и вам нужно будет перезапустить приложение, чтобы увидеть изменения. Это может занять много времени.

2. Принятое решение: debug forked runtime

Это несколько более сложное решение, в которое вы присоединяете отладчик к исполняемому серверу grails. Это описано более подробно в этом сообщении в блоге.

После настройки у вас есть дополнительная конфигурация запуска, которая позволяет запускать grails в разветвленном режиме и еще одну дополнительную конфигурацию прогона, которая позволяет вам отлаживать этот разветвленный режим. Уловка состоит в том, что вам необходимо запустить оба или это не сработает.

Плюсы:

  • У вас есть как отладка, так и замена кода времени выполнения
  • Это не мешает запустить приложение в обычном режиме. (т.е. у вас есть дополнительные опции).

Минусы:

  • Настройка занимает немного времени
  • Для запуска в режиме отладки требуется более сложный двухэтапный процесс (т.е. требуется больше времени)

Вопросы

Решение 2 в основном превосходит в том смысле, что оно обеспечивает гибкость. Я лично не очень часто использую debug, поэтому просто начинаем в обычном режиме. Когда я хочу отлаживать, я перезагружаюсь в режиме отладки.

Решение 1 строго лучше, если вам нужно отлаживать и также нужно перезапустить много. Например, когда вы работаете над вашими классами домена или базой данных в вашем BootStrap.groovy.

Ответ 6

Ни один из других ответов не работает для меня на Grails 3.x в 2016 году с Intellij 15.0.4. Это работает для меня:

Запустите grails в intellij с помощью этой команды:

run-app  --debug-jvm

Консоль должна выводить: "Прослушивание транспорта dt_socket по адресу: 5005 Приложение Grails работает в http://localhost:8080 в среде: разработка"

Теперь вы можете добавить новую конфигурацию типа "Remote" в Intellij. Затем запустите его с настройками по умолчанию.

И новое окно консоли отладки должно написать: "Подключено к целевой виртуальной машине, адрес:" localhost: 5005 ", транспорт:" сокет "

Готово.

Для заинтересованных лиц ссылка на документацию grails 3.x для запуска отлаживаемого сервера приведена в разделе 2.8, runAndDebuggingAnApplication:

http://grails.github.io/grails-doc/3.1.x/guide/gettingStarted.html#runningAndDebuggingAnApplication

"Существует несколько способов выполнения класса Application, если вы используете IDE, тогда вы можете просто щелкнуть правой кнопкой мыши по классу и запустить его непосредственно из вашей среды разработки, которая запустит ваше приложение Grails. Это также полезно для отладки, поскольку вы можете отлаживать непосредственно из среды IDE без необходимости подключения удаленного отладчика при использовании команды run-app -debug-jvm из командной строки.

Важное примечание. Когда я попробовал "просто щелкнуть правой кнопкой мыши по классу и запустить его прямо из вашей среды разработки", приложение действительно запустилось. Тем не менее, все запросы, отправленные мне на контроллер, вызвали 500 ошибок с сообщением: "Не удалось разрешить представление с именем" /myendpoint "в сервлет с именем" grailsDispatcherServlet ".

Итак, я вернулся к приведенным выше инструкциям.

Ответ 7

Это очень простой вопрос с Grails 3 и Idea (2016.1). Нет необходимости редактировать файлы больше, как рекомендовано в других ответах.

По какой-то причине значок отладки на панели инструментов "Идея" выделен серым цветом, поэтому вам просто нужно перейти к точке входа в приложение (класс, который имеет основной статический метод void, который запускает приложение), нажмите на один из запустите стрелки в левом желобе и выберите опцию Debug.

В документах JetBrains:

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-grails-3.html

Отладка приложений Grails 3

IntelliJ IDEA позволяет отлаживать ваше приложение Grails 3, используя Application.groovy.

В окне инструмента проекта откройте каталог инициализации и щелкните правой кнопкой мыши Application.groovy В раскрывающемся списке выберите Debug Grails: 'name' grails3_debug_app Вы также можете использовать редактор для начала отладки процесс.

Ответ 8

Всего три предположения:

Попробуйте запустить run-app, а не run-war, оба должны работать, но может быть run-war просто не работает.

Или: попробуйте отладить удаленно с консоли:

grails -debug run-app, а затем подключиться с помощью Remote Debug в Idea.

Или, в крайнем случае: понизить ваш проект до предыдущих версий Grails. Да, это действительно раздражает.

Надеюсь, что это поможет.

Ответ 9

Я тестировал последнюю версию с Grails 2.3.4 на Mac Os x Lion.

Затем я попробовал совет Igors и работал без разветвленного режима.

grails.project.fork = [
    test: false,
    run: false
]

Пожалуйста, проверьте подробнее документация grails

если вы хотите отлаживать разветвленный режим, вы должны проверить правильность сообщений в блоге.

http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

Ответ 10

Это никогда не должно быть конфигурацией по умолчанию и оставлено только для индивидуального выбора. Это ужасная боль, чтобы сделать две конфигурации, просто запустите эту вещь в режиме отладки в intellij. Сначала вам нужно настроить или изменить обычную конфигурацию запуска, добавив "--debug-fork" после запуска приложения. Во-вторых, вам нужно настроить удаленное отладки, приняв все значения по умолчанию. Затем вам нужно запустить конфигурацию запуска, и при ее запуске вы запустите конфигурацию отладки. Вот это боль. Я предпочитаю полностью избавляться от бега без разветвленного варианта при разработке. Время - это деньги, и у меня нет времени обезьяне. См. Объяснение г-на Хаки об этом. http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

Ответ 11

Оформить заказ этот блог об отладке режима викинга Grails.