2010-09-11 12 views
5

Estoy intentando depurar algunos problemas en algún código (bastante bletcherous) de Grails que heredé. Soy un novato relativo en Groovy y Grails, aunque soy un viejo chico de Java.Depuración de JDB del código de Groovy/Grails

Aquí está el problema: Tengo esto funcionando con jconsole y jdb, pero es difícil usar el depurador porque gran parte del código está en cierres. Entonces, por ejemplo,

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

como la implementación de un único método en un controlador.

Al ser un cierre, el nombre (en el momento en que el depurador lo ve) es TheController.closure527 (o algo así), y notablemente difícil de encontrar.

Entonces, ¿cómo se puede encontrar el mapa del nombre del bloque al cierre?

Más en general, ¿hay algún buen tutorial sobre cómo hacer este tipo de cosas?

Lo ideal es que la respuesta no implique cambiar a IntelliJ, como si Dios hubiera querido que usáramos IDEs así. Ella no nos habría dado EMACS.

Respuesta

3

Esto no es lo que quieres escuchar, pero la depuración es la única razón por la que uso intellij para la programación de mi grial. Si fuera fácil hacer lo que me pides, lo dejaría para un mejor editor. Las vinculaciones de teclas débiles y no estándar me vuelven loco, pero a veces la depuración es la mejor manera de encontrar el problema.

Lo mejor que se me ocurre es compilar el código y abrir el Class.closure123 y luego pasarlos a través de javap y grep para identificar el cierre correcto. Doloroso, pero no estoy seguro de que haya una mejor manera.

Como alternativa, puede lanzar una excepción desde el código, observe el seguimiento de la pila y luego encuentre la clase subyacente correcta desde allí.

Lo sé, bruto.

+0

Puede cambiar las combinaciones de teclas para IntelliJ sea apropiado para su gusto –

+0

sí y no, puede cambie sus combinaciones de teclas, pero solo a la funcionalidad que intellij realmente admitirá. Hay una cantidad de cosas en las combinaciones de teclas predeterminadas de emacs que intellij no admite (las cosas que extraño son principalmente en torno a las marcas de créditos/regiones). –

1

Uso IntelliJ, Eclipse o ajustar la configuración de teclado de Emacs (o hacer su propio mapa de teclado perfecto), y disfrutar del siglo 21 :)

+7

Ustedes, jóvenes, salgan de mi césped. –

+2

La pregunta es realmente "cómo depurar con jdb" y esta respuesta es completamente ortogonal a lo que se pregunta, incluso si es relevante. – Divick

+1

Dijo: "Idealmente, la respuesta no implicará cambiar a IntelliJ". Eso clasifica mi respuesta como no ideal. – lacroix1547

Cuestiones relacionadas