Jdb отладка кода Groovy/Grails


Я пытаюсь отладить некоторые проблемы в некотором (довольно блеклом) коде Grails, который я унаследовал. Я относительный новичок в Groovy и Grails хотя старая Ява парень.

Вот в чем проблема: у меня есть эта штука, работающая с jconsole и jdb-крючками, но трудно использовать отладчик, потому что так много кода находится в замыканиях. Так, например,

def niftyMethod = {
    // do something nifty
    anObject.doSomethingThatBreaks()
}

Как реализация одного метода на контроллере.

Будучи замыканием, имя (к моменту запуска отладчика видит это) является контролером.closure527 (или что-то в этом роде), и особенно трудно найти.

Итак, как можно найти карту от названия блока до закрытия?

В более общем плане, есть ли какие-либо хорошие учебники по выполнению такого рода вещей?

В идеале ответ не будет включать в себя переход на IntelliJ, как если бы Бог хотел, чтобы мы использовали IDEs, как это она не дала бы нам EMACS.
2 5

2 ответа:

Это не то, что вы хотите услышать, но отладка-единственная причина, по которой я использую intellij для программирования grails. Если бы было легко сделать то, о чем вы просите, я бы оставил это для лучшего редактора. Слабые, нестандартные привязки ключей сводят меня с ума, но иногда отладка-лучший способ найти проблему.

Лучшее, что я могу придумать, - это скомпилировать код и открыть класс.closure123 затем пропускает их через javap и grep через них, чтобы определить правильное закрытие. Больно, но я не уверен, что есть лучший способ.

Кроме того, вы можете создать исключение из кода, посмотреть на трассировку стека и затем найти правильный базовый класс оттуда.

Я знаю, Гросс.

Используйте Intellij, установите Eclipse или Emacs Keymap (или сделайте свою собственную идеальную клавиатуру) и наслаждайтесь 21-м веком:)