JDB отладка кода Groovy/Grails
Я пытаюсь отладить некоторые проблемы в некотором (довольно сложном) коде Grails, который я унаследовал. Я относительный нуб в Groovy и Grails, хотя я старый парень из Java.
Вот проблема: у меня эта штука работает с подключаемыми jconsole и jdb, но сложно использовать отладчик, потому что большая часть кода находится в замыканиях. Так, например,
def niftyMethod = {
// do something nifty
anObject.doSomethingThatBreaks()
}
как реализация одного метода на контроллере.
Будучи замыканием, имя (к тому времени, когда отладчик это видит) - TheController.closure527 (или что-то в этом роде), и его особенно трудно найти.
Итак, как найти карту от имени блока до замыкания?
В целом, есть ли хорошие уроки по выполнению подобных вещей?
В идеале, ответ не должен включать переход на IntelliJ, как если бы Бог хотел, чтобы мы использовали такие IDE. Она бы не дала нам EMACS.
2 ответа
Это не то, что вы хотите услышать, но отладка - единственная причина, по которой я использую intellij для программирования Grails. Если бы было легко сделать то, что вы просите, я бы оставил это для лучшего редактора. Слабые, нестандартные привязки клавиш сводят меня с ума, но иногда отладка - лучший способ найти проблему.
Лучшее, что я могу придумать, - это скомпилировать код и открыть Class.closure123, а затем направить их через javap и grep через них, чтобы определить правильное замыкание. Больно, но я не уверен, что есть лучший способ.
В качестве альтернативы, вы можете сгенерировать исключение из кода, посмотреть трассировку стека и затем найти правильный базовый класс оттуда.
Я знаю, брутто.
Используйте Intellij, установите Eclipse или Emacs Keymap (или создайте свою собственную совершенную раскладку) и наслаждайтесь 21-м веком:)