(我不是Java程序员,我只是一个终端用户,试图解决其他人代码中缺少异常处理和报告的问题。)
当Java回溯未处理的异常时,有没有办法从Java获取更详细的信息,比如变量名和值?
这是关于Minecraft服务器日志的,显然在某个地方有一个损坏的块文件。错误跟踪似乎太模糊了,无法告诉我问题的确切位置,例如错误中涉及的特定数据文件名称。
2013-12-16 11:19:03 [WARNING] Failed to handle packet for PlayerName [/XX.XX.XX.XX:5046]: java.lang.ArrayIndexOutOfBoundsException: -448550
at java.util.ArrayList.elementData(ArrayList.java:371)
at java.util.ArrayList.set(ArrayList.java:399)
at net.minecraft.world.chunk.storage.RegionFile.<init>(RegionFile.java:89)
at net.minecraft.world.chunk.storage.RegionFileCache.func_76550_a(SourceFile:61)
at net.minecraft.world.chunk.storage.AnvilChunkLoader.chunkExists(AnvilChunkLoader.java:63)
at net.minecraft.world.gen.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:167)
at net.minecraft.server.management.PlayerInstance.<init>(PlayerInstance.java:38)
at net.minecraft.server.management.PlayerManager.func_72690_a(PlayerManager.java:116)
at net.minecraft.server.management.PlayerManager.func_72683_a(PlayerManager.java:175)
at net.minecraft.server.management.ServerConfigurationManager.func_72375_a(ServerConfigurationManager.java:269)
at net.minecraft.server.management.ServerConfigurationManager.func_72377_c(ServerConfigurationManager.java:335)
at net.minecraft.server.management.ServerConfigurationManager.func_72355_a(ServerConfigurationManager.java:180)
at net.minecraft.network.NetLoginHandler.completeConnection(NetLoginHandler.java:218)
at cpw.mods.fml.common.network.FMLNetworkHandler.handleClientConnection(FMLNetworkHandler.java:171)
at cpw.mods.fml.common.network.FMLNetworkHandler.onConnectionReceivedFromClient(FMLNetworkHandler.java:124)
at net.minecraft.network.NetLoginHandler.func_72529_d(NetLoginHandler.java:194)
at net.minecraft.network.NetLoginHandler.func_72532_c(NetLoginHandler.java:81)
at net.minecraft.server.ServerListenThread.func_71766_a(ServerListenThread.java:57)
at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(SourceFile:29)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:865)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:732)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:614)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)从日志中,我了解到一个玩家正在尝试登录,它正在加载玩家上次所在的位置的世界数据,但一个区域文件已损坏,文件数据中的数组无效。
但是哪个区域文件呢?它没有告诉我这一点。
是否可以通过变量名和值使这些错误日志更加详细,例如使用额外的启动java命令行设置?
我发现几乎没有什么可以解释如何解释这些回溯的痕迹。我假设每行末尾的数字指的是源代码中的行号,但我无法编辑代码,因此检查这些行的源代码也无济于事。
环境: Ubuntu 13.10
java版本"1.7.0_25“OpenJDK运行时环境(IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3) OpenJDK 64位服务器虚拟机(build 23.7-b01,混合模式)
发布于 2013-12-30 13:36:25
你真的想学习如何使用源码级别的调试器。这些将允许您逐步执行代码,在感兴趣的点或抛出异常时停止,并检查(甚至经常修改)变量值。
哪个是最好的,这在很大程度上是一个品味问题,但我将在这里打破规则,建议您尝试使用Eclipse环境,因为它是我使用过的唯一一个在集成代码编写、调试和管理方面做得很好的IDE。
( Java运行时环境确实有它自己的调试器,它可以做大多数相同的事情--但它是一个命令行工具,我认为它对于初学者来说要难得多。有时它是正确的工具,大多数情况下,您必须通过非常有限的连接远程工作,但我不建议您开始使用它。)
https://stackoverflow.com/questions/20833447
复制相似问题