【问题标题】:Monitor variables of a running program?监视正在运行的程序的变量?
【发布时间】:2015-10-27 14:43:59
【问题描述】:

我正在开发一款小型多人游戏,它有一个 tick 方法,可以执行各种逻辑操作,例如移动、创建和检查游戏元素。

tick 方法每 100 毫秒调用一次。有时由于错误而出现问题。但是这些错误很难追踪,主要是因为每秒调用很多次。因此,当我在某些时候添加调试日志条目时,日志会变得过于拥挤并且不太容易理解。

有没有办法在游戏继续运行时监控某些变量?

我尝试了 jmx,但由于 jmx 的复杂性,设置 jmx 来监控变量的时间相当长。另外,当跟踪一个但我不知道要监控哪个变量时,这意味着我需要快速从一个变量切换到另一个变量。

【问题讨论】:

  • 其他然后记录到输出文件没有没有。除非您远程调试应用程序,否则您必须单步执行代码。
  • 您可以使用大多数可用的 IDE 调试程序并观察变量值的变化。
  • 如果您的意思是在运行时监控变量的值,我认为除非应用程序在调试模式下运行,否则不会有这样的选项。
  • @TinusTate 您使用的是哪种语言/环境?
  • @Abhishrek java 当前正在使用,注意 java 标签 ;-)

标签: java monitoring


【解决方案1】:

这是每秒调用 30/60 次的游戏设计的一个大问题。

我发现在屏幕上输出所有值很有帮助,因为它不会保存以前的值,因此您可以轻松地看到事情何时发生变化。

您还可以在值更改到不应该更改的范围时添加断点,从而允许您进一步检查代码,例如

  1 if(val>1000){
  2     debugger;
  3 }

【讨论】:

  • 关于在屏幕上输出值的提示非常好。我很快写了一个带有 jtable 的 jframe,代码可以在其中放置变量值。 jtable 每隔几秒刷新一次,从而生成一个在程序运行时显示我的变量的表。使用 1 行代码,我更新了表中的变量。简单的东西很好!
  • 我的建议很有帮助 :) 祝你好运!
【解决方案2】:

我认为Chronon DVR for Java 或类似工具可能是您的解决方案,您可以记录所有内容,然后进行分析,试图找出导致问题的错误。

Chronon 记录您的 Java 程序的整个执行过程并保存下来 到磁盘。录音可以随时回放,从而消除 那些“不可重现”的错误。

或者,您可以尝试将 Eclipse 调试器附加到远程运行的 Java 应用程序,查看this guide 了解更多信息。

【讨论】:

  • 这是一个有趣的软件,我看了第一个视频,它有很多功能可以在问题发生很长时间后发现/跟踪问题。我需要对其进行更多研究,以了解它是否对我的这种错误有用。
猜你喜欢
  • 1970-01-01
  • 2012-01-22
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
相关资源
最近更新 更多