2016-09-17 45 views
1

我正在编写一个Java API的脚本,它编译为类文件,并在我的虚拟机上执行(我无法访问此虚拟机,并且无法从内部调试我的类文件)。这些脚本需要可观察的数据才能执行,并且只有在虚拟机内执行完毕后才能正常运行。由于这些类文件的执行方式,据我所知,我无法使用IDE的内置调试器进行调试。java目前在做什么?

我真的没有编码的词汇,甚至搜索答案到最后一条语句,所以请纠正我,如果我错了。

不管怎么说,我已经决定让我来调试这些脚本的唯一方法是经典的打印语句的方法。这太糟糕了。但它的工作。而且似乎api的整个社区都使用这种方法。

我有,我可以使用反射,因为他们正在执行从我的课抓取信息的想法,但是这仍然没有给我访问,我正在寻找的行由行调试。

我想要做的是逐步监视脚本的执行(虚拟机的每次计算)并存储关于这些计算的信息(类“bar”中的变量“foo”)变为4行“soandso”)作为一种运行缓存,在发生错误时转储到系统控制台。

这可能吗?

+1

你应该考虑一个记录器。它就像打印语句,除了您可以指定日志级别(调试,信息,警告,错误)并且您可以选择写入文件以及stdout(如打印语句)。如果您有权访问虚拟机,则也可以下载日志。 – algrebe

+0

您使用哪个IDE不允许调试? – Codebender

+1

不知道我挺蛮跟从这个问题的,Java远程调试你需要做什么?至少在Eclipse中这是可行的。 – paisanco

回答

0

你可以看看dynamic proxies

Here是它的一个很好的解释。

使用动态代理,你可以输出(日志,发送邮件,...)被称为beeing的方法,并传递给方法的参数。

这不完全是你在找什么,但它可能会帮助你。