JDB-отладка кода Groovy/Grails

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

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

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

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

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

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

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

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


person Charlie Martin    schedule 11.09.2010    source источник


Ответы (2)


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

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

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

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

person Ted Naleid    schedule 11.09.2010
comment
Вы можете изменить сочетания клавиш IntelliJ на любой вкус. - person Dónal; 13.09.2010
comment
да и нет, вы можете изменить свои сочетания клавиш, но только на те функции, которые Intellij действительно поддерживает. В сочетаниях клавиш emacs по умолчанию есть ряд вещей, которые intellij не поддерживает (вещи, которые я пропускаю, в основном связаны с маркировкой paredit/region). - person Ted Naleid; 13.09.2010

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

person lacroix1547    schedule 12.09.2010
comment
Вы, маленькие дети, убирайтесь с моей лужайки. - person Charlie Martin; 13.09.2010
comment
Вопрос действительно в том, как отлаживать с помощью jdb, и этот ответ полностью ортогонален тому, что спрашивают, даже если это актуально. - person Divick; 13.05.2014
comment
Он сказал, что в идеале ответ не будет включать переход на IntelliJ. Это классифицирует мой ответ как не идеальный. - person lacroix1547; 29.07.2014