【问题标题】:JDB debugging of Groovy/Grails codeGroovy/Grails 代码的 JDB 调试
【发布时间】:2010-09-11 14:44:30
【问题描述】:

我正在尝试调试我继承的一些(相当无礼的)Grails 代码中的一些问题。我在 Groovy 和 Grails 方面相对来说是个新手,虽然我是 Java 的老家伙。

问题来了:我在运行这个东西时使用了 jconsole 和 jdb 钩子,但是使用调试器很困难,因为很多代码都在闭包中。所以,例如,

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

作为控制器上单个方法的实现。

作为一个闭包,名称(当调试器看到它​​时)是 TheController.closure527(或类似名称),而且很难找到。

那么,如何找到从块名到闭包的映射呢?

更一般地说,有没有关于做这种事情的好教程?

理想情况下,答案不会涉及转换到 IntelliJ,就好像上帝让我们使用这样的 IDE,她不会给我们 EMACS。

【问题讨论】:

    标签: java grails groovy remote-debugging jdb


    【解决方案1】:

    这不是您想听到的,但调试是我使用 intellij 进行 grails 编程的唯一原因。如果很容易做到你所要求的,我会把它留给一个更好的编辑器。弱的、非标准的键绑定让我发疯,但有时调试是找出问题的最佳方法。

    我能想到的最好的办法是编译代码并打开 Class.closure123,然后通过 javap 和 grep 管道它们以识别正确的闭包。很痛苦,但我不确定有没有更好的方法。

    或者,您可以从代码中引发异常,查看堆栈跟踪,然后从那里找到正确的底层类。

    我知道,恶心。

    【讨论】:

    • 您可以将 IntelliJ 键绑定更改为任何适合您的口味
    • 是和否,您可以更改您的键绑定,但只能更改为 intellij 实际支持的功能。默认的 emacs 键绑定中有很多东西是 intellij 不支持的(我想念的主要是 paredit/region 标记的东西)。
    【解决方案2】:

    使用 Intellij,设置 Eclipse 或 Emacs 键盘映射(或制作您自己的完美键盘映射),享受 21 世纪 :)

    【讨论】:

    • 你们这些年幼的孩子离开我的草坪。
    • 问题实际上是“如何使用 jdb 进行调试”,这个答案与所问的内容完全正交,即使相关。
    • 他说“理想情况下,答案不会涉及切换到 IntelliJ”。这将我的答案归类为不理想。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多