2010-09-11 22 views
5

Je tente de déboguer certains problèmes dans un code Grails (plutôt médiocre) dont j'ai hérité. Je suis un noob relatif dans Groovy et Grails bien qu'un vieux type de Java.Débogage JDB du code Groovy/Grails

Voici le problème: J'ai cette chose en cours d'exécution avec jconsole et jdb hooks, mais il est difficile d'utiliser le débogueur, car une grande partie du code est en fermetures. Ainsi, par exemple,

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

en tant que mise en œuvre d'une méthode unique sur un contrôleur. En tant que fermeture, le nom (au moment où le débogueur le voit) est TheController.closure527 (ou quelque chose comme ça), et notamment difficile à trouver. Alors, comment peut-on trouver la carte du nom du bloc à la fermeture?

Plus généralement, y a-t-il de bons tutoriels sur ce genre de choses?

Idéalement, la réponse n'impliquera pas de passer à IntelliJ, comme si Dieu avait voulu que nous utilisions des IDE comme ça. Elle ne nous aurait pas donné EMACS.

Répondre

3

Ce n'est pas ce que vous voulez entendre, mais le débogage est la seule raison pour laquelle j'utilise intellij pour la programmation de mes grails. S'il était facile de faire ce que vous demandez, je le laisserais à un meilleur éditeur. Les liaisons de touches faibles et non standard me rendent fou, mais parfois le débogage est le meilleur moyen de trouver le problème. La meilleure chose à laquelle je puisse penser est de compiler le code et d'ouvrir le Class.closure123, puis de le passer dans javap et de le grep pour identifier la bonne fermeture. Douloureux, mais je ne suis pas sûr qu'il y ait un meilleur moyen. Alternativement, vous pouvez lancer une exception à partir du code, regarder la trace de la pile et ensuite trouver la bonne classe sous-jacente à partir de là.

Je sais, brut.

+0

Vous pouvez modifier les raccourcis clavier IntelliJ à tout dépend de votre goût –

+0

oui et non, vous pouvez changez vos raccourcis clavier mais seulement à la fonctionnalité qu'intellij prendra en charge. Il y a un certain nombre de choses dans les raccourcis claviers par défaut d'emacs que intellij ne supporte pas (les choses qui me manquent concernent principalement le marquage de parité/région). –

1

Utilisez Intellij, définissez l'Eclipse ou Emacs Keymap (ou faire votre propre keymap parfait), et profiter du 21ème siècle :)

+7

Vous les jeunes enfants descendez de ma pelouse. –

+2

La question est vraiment "comment déboguer avec jdb" et cette réponse est complètement orthogonale à ce qui est demandé même si c'est pertinent. – Divick

+1

Il a dit: «Idéalement, la réponse n'impliquera pas de passer à IntelliJ». Cela classe ma réponse comme n'étant pas idéale. – lacroix1547