【问题标题】:How to log executed lines of code and variables at that point in Java?如何在 Java 中记录执行的代码行和变量?
【发布时间】:2020-09-23 21:30:38
【问题描述】:

我正在为我的 Uni 开发一个项目,我想在其中可视化代码调试。为此,我需要以某种方式记录给定 Java 程序的已执行代码行和变量及其值。一个例子:

public class Main {

public static void main(String[] args){
   String abc = "def";
   String test = "hello world";
   String foo = abc+test;   
}
}

如果我记录这个程序,我的输出应该是这样的:

  1. 主要在第 3 行:
  2. 第 4 行的主要内容:abc=def
  3. 第 5 行的主要内容:abc=def,test = hello world
  4. 第 6 行的主要内容:abc=def, test = hello world, foo = defhello world

日志程序应该在后台运行,以便我可以正常使用日志程序。 我已经尝试过使用 Java 代理和 Stacktrace 的东西,但我无法获得好的结果。我希望有任何方法可以做到这一点。提前感谢您的帮助!

【问题讨论】:

标签: java debugging logging


【解决方案1】:

有一些方法可以做到这一点,像 Intelij IDEA 这样的一些 IDE 在你调试时实际上会在编辑器中显示变量值。

但如果你想记录它,不仅信息日志会很快变得庞大(实际程序为千兆字节/兆兆字节),而且会相当复杂。

这里有几种方法可以做到这一点:

【讨论】:

  • 感谢您的回答,我想我会尝试使用 Java 调试器 API。但是,您指向文档的链接不起作用。是否可以在各自的命令提示符下启动traget程序和调试程序?
  • 看看你的IDE能做什么。它可以启动任何 java 程序并对其进行调试...或者它可以使用正确的命令行选项连接到任何程序,以便打开调试端口。该程序可以做任何事情。我经常调试网络服务器,也调试基于命令行的应用程序。
  • 感谢您的回答,我能够编写自己的调试器,它能够以我想要的方式记录简单的程序。我现在正在尝试调试基于命令行的 java 程序,但我不知道如何在调试器和被调试者之间转发输入和输出。我已经为此写了question,但还没有得到答案。你知道怎么做吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 2015-10-11
  • 2021-12-03
相关资源
最近更新 更多