【问题标题】:log all trace info during a debug session in eclipse在 Eclipse 中的调试会话期间记录所有跟踪信息
【发布时间】:2013-03-20 16:41:07
【问题描述】:

我想记录调试会话的每个步骤(以便稍后处理所有这些数据)的所有调试信息,例如调用的方法的名称、参数值、所有变量值等。

是否有任何选项可以启用此功能?我应该在哪里更改代码才能做到这一点?

有一点很重要:它不是 java 程序。这是一个在 Eclipse 内部运行的 TCL,使用 activeState 调试器。所以 AOP 和 JDT 不是这里的选项:-(

TIA

狮子座

【问题讨论】:

    标签: eclipse debugging tcl trace


    【解决方案1】:

    我建议在 tcl 中使用trace 命令。

    一个简单的例子:

    set ::TraceFd [open {/path/to/logfile} a]
    proc ::TraceLog args {
        puts $::TraceFd $args
    }
    trace add execution source {enterstep leavestep} ::TraceLog
    source /the/main/file.tcl
    

    这或多或少是你想要的。我不知道 eclipse 如何与 Tcl 一起工作,但调试 Tcl 的最佳方法是使用 Tcl :)

    【讨论】:

    • +1。请注意,执行跟踪具有严重的性能损失,尤其是在以其他方式设计为至少具有一定速度的代码中。在某些情况下,这可能是值得支付的罚款,但您确实支付。 (如果代码创建了任何子解释器,您也不会追踪到任何子解释器。大多数 Tcl 代码不会。)
    • 再做一件事(trace 已经足够好了,但也许我们可以做得更好)。有没有办法让跟踪只显示有效执行的行? (例如忽略不满足条件的整个“if”循环)。 TIA
    • 如果一行没有被执行,那么它就不会显示出来。但是如果if 0 {foo bar}被执行,整个if 0 {foo bar}会进入日志,foo bar不会。
    【解决方案2】:

    根据您的具体需求,也许也可以查看 logger 包及其跟踪 Loglevel,它还使用执行跟踪来收集一些信息。

    http://tcllib.sourceforge.net/doc/logger.html

    您可以将它们添加到您的代码中,如果它们被关闭,您将支付零性能损失,并且您可以在需要时打开它们。

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 2022-12-21
      相关资源
      最近更新 更多