У меня возникли трудности при попытке отладки кода в grails. Трудно помещать в текст, поэтому я опубликовал скринкаст, показывающий, что проблема here. Короче говоря, пока я отлаживаю отладчик, он начинает прыгать с места на место и не следовать логике программы, которую я имею. Единственный другой подобный вопрос, который я нашел, - год, не имел решения, и его можно найти here.Отладчик Groovy не синхронизирован
Лучшая догадка, которую я до сих пор имею в виду, заключается в том, что отладчик отображает текст, который я набрал, но на самом деле выполняет старую версию файла класса, который он где-то кэшировал. Поэтому я попробовал:
- очистка проект
- вручную удалить все файлы классы из целевой папки и от целевого затмения папки
- Поиска всего моего жесткого диска для дополнительных файлов с похожими названиями
- удаление мой проект из рабочей области и повторно добавлять его
- закрытия и повторного открытия IDE
- Grails обновить-зависимостей
- Импорт проекта в новую IDE (я использовал GGTS, я переключился на IntelliJ)
Ни одно из этих решений не имело никакого эффекта. Я понял, что проблема была в файле .groovy, и я писал почти чистую Java, поэтому я удалил файл .groovy и повторно создал класс в файле .java. Это решило мою проблему. К сожалению, у меня снова возникла проблема, и на этот раз именно в контроллере в значительной степени зависит от структуры Grails, поэтому решение не является вариантом. Помимо того, что он также находится в файле .groovy, другое сходство заключается в том, что код разбивается на оператор if.
Мои следующие шаги:
- Убедитесь, что приложение не выполняет код, который я вижу, используя функции печати для контроля фактического потока выполнения.
- Закомментируйте всю функцию и добавьте функциональность по одной строке за раз, чтобы увидеть, могу ли я увидеть, что ее нарушает.
- Удалите файл .groovy и заново создайте его как другой файл .groovy.
Любая поправка приветствуется, и поскольку я не могу найти ответы на них, я буду продолжать обновлять этот вопрос, поскольку я узнаю больше.
Обновление: Я проверял, что выполняемый код не совпадает с кодом, который показывается для выполнения. Подробности here. В частности, места, где отладчик останавливается в конце блоков кода, просто иллюзия. На данный момент я работаю над этим, игнорируя аномальные прыжки в отладчике. Мне удалось достаточно хорошо кодировать этот код, но он далеко не идеален. – benjaminjsanders
Обновление: я заметил еще одну, предположительно связанную с выпуском Grails Debugger. Я пытался решить проблему, добавив переменную, а затем распечатав ее значение в разных точках выполнения программы. Я обнаружил, что когда я очищал и перекомпилировал программу, строка, объявляющая переменную, не выполнялась, но строка, вызывающая переменную для печати ее значения, выполнялась. Ясно, что это исключило исключение, поскольку отладчик считал, что переменная не была объявлена. – benjaminjsanders
Я попытался решить все вышеперечисленные проблемы, обновив от grails 1.3.7 до grails 2.2.0. Обновление было неудачным, и приложение на данный момент довольно мало, поэтому я создал новый проект в grails 2.2.0, создал пустые классы с правильными именами, а затем вставил в логику из моего старого кода. Эффект состоял в том, чтобы уничтожить все ранее существовавшие области проблем и ошибки отладчика, но тогда одна и та же проблема возникала и в новом проекте, только в разных местах кода. – benjaminjsanders