2010-09-11 2 views
5

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

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

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

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

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

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

В целом, есть ли хорошие учебные пособия по этому поводу?

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

ответ

3

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

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

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

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

+0

Вы можете изменить сочетания клавиш IntelliJ к тому, что подходит вашему вкусу –

+0

да и нет, вы можете измените свои привязки, но только на функциональность, которая действительно будет поддерживать intellij. В стандартных полях emacs по умолчанию есть ряд вещей, которые intellij не поддерживает (вещи, которые я пропускаю, в основном, относятся к значению paredit/region). –

1

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

+7

Вы, молодые дети, сошли с газона. –

+2

Вопрос действительно «как отлаживать с помощью jdb», и этот ответ полностью ортогонален тому, что задается, даже если это необходимо. – Divick

+1

Он сказал: «В идеале ответ не будет связан с переходом на IntelliJ». Это классифицирует мой ответ как не идеальный. – lacroix1547