5

継承したいくつかの(かなり厄介な)Grailsコードでいくつかの問題をデバッグしようとしています。私はGroovyとGrailsの比較的初心者ですが、Javaの老人です。

問題は次のとおりです。jconsoleフックとjdbフックを使用してこの機能を実行していますが、コードの多くがクロージャに含まれているため、デバッガーを使用するのは困難です。したがって、たとえば、

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

コントローラでの単一メソッドの実装として。

クロージャーであるため、(デバッガーがそれを認識するまでの)名前はTheController.closure527(またはそのようなもの)であり、特に見つけるのは困難です。

では、ブロック名からクロージャーまでのマップをどのように見つけることができますか?

より一般的には、この種のことを行うための良いチュートリアルはありますか?

理想的には、神が私たちにEMACSを与えなかったようなIDEを使用することを神が意味していたかのように、答えはIntelliJに切り替えることを含まないでしょう。

4

2 に答える 2

3

これはあなたが聞きたいことではありませんが、grails プログラミングに intellij を使用する唯一の理由はデバッグです。あなたが求めていることをするのが簡単だったら、私はそれをより良い編集者に任せます. 脆弱で非標準のキー バインディングに気が狂いそうになりますが、デバッグが問題を見つける最善の方法である場合もあります。

私が考えることができる最善の方法は、コードをコンパイルして Class.closure123 を開き、javap を介してそれらをパイプし、それらを grep して正しいクロージャーを特定することです。痛いですが、もっと良い方法があるかどうかはわかりません。

または、コードから例外をスローし、スタック トレースを見て、そこから適切な基になるクラスを見つけることもできます。

私は知っています、グロス。

于 2010-09-11T18:27:54.773 に答える
1

Intellij を使用し、Eclipse または Emacs キーマップを設定 (または独自の完璧なキーマップを作成) し、21 世紀をお楽しみください :)

于 2010-09-12T01:25:17.277 に答える