JDB отладка кода Groovy / Grails - PullRequest
5 голосов
/ 11 сентября 2010

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

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

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

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

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

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

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

В идеале, ответ не должен включать переход на IntelliJ, как если бы Бог хотел, чтобы мы использовали такие IDE. Она бы не дала нам EMACS.

Ответы [ 2 ]

3 голосов
/ 11 сентября 2010

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

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

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

Я знаю, брутто.

1 голос
/ 12 сентября 2010

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

...