Minecraft | 初步學(xué)會閱讀錯誤日志 | 亡靈戰(zhàn)爭特供

[變廢為寶]初步學(xué)會閱讀錯誤日志

? ? ? ?本文檔將(試圖)教會你如何從Minecraft的錯誤日志(即crash-report)中提取關(guān)鍵信息并嘗試解決問題。推薦熟悉計算機(jī)基本操作、Minecraft基本文件結(jié)構(gòu)的玩家閱讀。推薦熟悉計算機(jī)基本操作、Minecraft基本文件結(jié)構(gòu)的玩家閱讀。

一崩潰就重啟”的辦法注定無法解決根本問題。顯然絕大多數(shù)人面對Minecraft錯誤日志中一長串的英文都會心累,但要想解決問題就至少要初步學(xué)會讀(真幾把惡心的)錯誤日志。這便是本文檔的目的所在。當(dāng)然,本人才疏學(xué)淺,如果有疏漏之處,歡迎指正。
(也許你看完還是一頭霧水,但我相信你還是能懂一點(diǎn)的~~)
——MF
請注意:加紅色的部分為重點(diǎn),加粗的部分需要特別注意!(括號+刪除線的部分為調(diào)侃)


第一部分 錯誤日志的基本結(jié)構(gòu)和樣例分析
錯誤日志會生成在游戲主目錄\.minecraft\crash-reports文件夾里,你需要分析的便是修改日期最晚的一份報告。
這里舉一份亡靈戰(zhàn)爭彌賽亞正式版客戶端1.2.9的錯誤日志的例子,以便讓你熟悉Minecraft錯誤日志的基本結(jié)構(gòu)。
---- Minecraft Crash Report ----
// Shall we play a game?
?
Time: 22-7-30 上午12:07
Description: Ticking entity
?
java.util.ConcurrentModificationException
?????? at java.util.HashMap$HashIterator.remove(Unknown Source)
?????? at net.minecraft.entity.EntityLivingBase.func_70679_bo(EntityLivingBase.java:528)
?????? at net.minecraft.entity.EntityLivingBase.func_70030_z(EntityLivingBase.java:293)
?????? at net.minecraft.entity.EntityLiving.func_70030_z(EntityLiving.java:214)
?????? at net.minecraft.entity.Entity.func_70071_h_(Entity.java:318)
?????? at net.minecraft.entity.EntityLivingBase.func_70071_h_(EntityLivingBase.java:1561)
?????? at net.minecraft.entity.EntityLiving.func_70071_h_(EntityLiving.java:272)
?????? at noppes.npcs.entity.EntityNPCInterface.func_70071_h_(EntityNPCInterface.java:223)
?????? at noppes.npcs.entity.EntityCustomNpc.func_70071_h_(EntityCustomNpc.java:38)
?????? at net.minecraft.world.World.func_72866_a(World.java:2070)
?????? at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:648)
?????? at net.minecraft.world.World.func_72870_g(World.java:2034)
?????? at WorldServerOF.func_72870_g(WorldServerOF.java:347)
?????? at net.minecraft.world.World.func_72939_s(World.java:1887)
?????? at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:489)
?????? at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:636)
?????? at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547)
?????? at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:186)
?????? at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:396)
?????? at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)

這是錯誤日志最開始對發(fā)生錯誤的原因進(jìn)行描述的部分。你需要特別注意的是日志中加紅色的內(nèi)容,分別是報告對問題的粗略描述(Description后的部分)和發(fā)生的報錯(java.lang.XXXException:XXX)。至于BugJang的調(diào)侃、發(fā)生錯誤的時間顯然(不)可以忽略。下方的一長串a(chǎn)t XXX則被稱為棧幀,相當(dāng)于調(diào)用鏈,最后被調(diào)用的部分(也就是出錯的部分)會被錯誤日志放在最上方,第一個是最開始拋出異常的棧幀,最后一個是最后拋出異常的棧幀(這一部分如果看不懂可以忽略)。不過如果你能找出被調(diào)用且出錯的模組/minecraft核心jar文件,用壓縮軟件打開后,你會發(fā)現(xiàn)這些棧幀的排列順序事實上與被調(diào)用的jar的內(nèi)部文件結(jié)構(gòu)相同。如果棧幀中出現(xiàn)了Caused by: XXX,則這也是關(guān)鍵的報錯。棧幀中往往會流露出報錯的細(xì)節(jié)或者導(dǎo)致錯誤發(fā)生的原因,為解決問題提供參考。
本樣例中,可以確定發(fā)生了實體出錯(Ticking Entity)的問題,報錯則為java.util.ConcurrentModificationException,根據(jù)下文的at java.util.HashMap$HashIterator.remove(Unknown Source)可以知道是HashMap在遍歷并刪除元素時出錯(如果看不懂可以忽略),已經(jīng)可以確定發(fā)生的是什么類型的問題(以及可能的解決方法),但為了保險起見我們繼續(xù)往下看。
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
?
-- Head --
Stacktrace:
?????? at java.util.HashMap$HashIterator.remove(Unknown Source)
?????? at net.minecraft.entity.EntityLivingBase.func_70679_bo(EntityLivingBase.java:528)
?????? at net.minecraft.entity.EntityLivingBase.func_70030_z(EntityLivingBase.java:293)
?????? at net.minecraft.entity.EntityLiving.func_70030_z(EntityLiving.java:214)
?????? at net.minecraft.entity.Entity.func_70071_h_(Entity.java:318)
?????? at net.minecraft.entity.EntityLivingBase.func_70071_h_(EntityLivingBase.java:1561)
?????? at net.minecraft.entity.EntityLiving.func_70071_h_(EntityLiving.java:272)
?????? at noppes.npcs.entity.EntityNPCInterface.func_70071_h_(EntityNPCInterface.java:223)
?????? at noppes.npcs.entity.EntityCustomNpc.func_70071_h_(EntityCustomNpc.java:38)
?????? at net.minecraft.world.World.func_72866_a(World.java:2070)
?????? at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:648)
?????? at net.minecraft.world.World.func_72870_g(World.java:2034)
?????? at WorldServerOF.func_72870_g(WorldServerOF.java:347)
?????? at net.minecraft.world.World.func_72939_s(World.java:1887)
?
-- Entity being ticked --
Details:
?????? Entity Type: customnpcs.CustomNpc (noppes.npcs.entity.EntityCustomNpc)
?????? Entity ID: 19068
?????? Entity Name: 被俘虜?shù)氖勘?/p>
?????? Entity's Exact location: -2503.03, 174.00, -359.42
?????? Entity's Block location: World: (-2504,174,-360), Chunk: (at 8,10,8 in -157,-23; contains blocks -2512,0,-368 to -2497,255,-353), Region: (-5,-1; contains chunks -160,-32 to -129,-1, blocks -2560,0,-512 to -2049,255,-1)
?????? Entity's Momentum: -0.38, 0.40, -0.08
Stacktrace:
?????? at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:489)
?????? at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:636)
?
-- Affected level --
Details:
?????? Level name: §3§l亡靈戰(zhàn)爭·彌賽亞 §w正式版V1.2.9
?????? All players: 1 total; [EntityPlayerMP['daqin_6666'/912, l='§3§l亡靈戰(zhàn)爭·彌賽亞 §w正式版V1.2.9', x=-2490.81, y=176.36, z=-357.42]]
?????? Chunk stats: ServerChunkCache: 1372 Drop: 0
?????? Level seed: 999
?????? Level generator: ID 00 - default, ver 1. Features enabled: true
?????? Level generator options:
?????? Level spawn location: World: (-1936,23,40), Chunk: (at 0,1,8 in -121,2; contains blocks -1936,0,32 to -1921,255,47), Region: (-4,0; contains chunks -128,0 to -97,31, blocks -2048,0,0 to -1537,255,511)
?????? Level time: 94637899 game time, 60000 day time
?????? Level dimension: 0
?????? Level storage version: 0x04ABD - Anvil
?????? Level weather: Rain time: 65932 (now: false), thunder time: 31954 (now: false)
?????? Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: true
Stacktrace:
?????? at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547)
?????? at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:186)
?????? at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:396)
?????? at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)

這一部分是錯誤日志對出錯部分的較為詳細(xì)的描述,分別包含了頭部(Head)所調(diào)用的棧幀、出錯部分的細(xì)節(jié)、發(fā)生錯誤的存檔的細(xì)節(jié),以及相應(yīng)的被調(diào)用的棧幀。如果已經(jīng)確定了問題,則這部分一般可以忽略。
本樣例中,我們可以發(fā)現(xiàn)出錯的是自定義NPC mod(CustomNPCs)的實體,且可以確定其名稱為“被俘虜?shù)氖勘?,出錯原因為“Entity being ticked””,根據(jù)經(jīng)驗推斷可以知道這個問題是由于藥水核心(Potion Core)或者RC’sEffect’的藥水效果與原版的藥水效果相沖突導(dǎo)致的;同時發(fā)生錯誤的存檔為“§3§l亡靈戰(zhàn)爭·彌賽亞 §w正式版V1.2.9”,也就是亡靈戰(zhàn)爭·彌賽亞標(biāo)準(zhǔn)版1.2.9的主存檔。
-- System Details --
Details:
?????? Minecraft Version: 1.7.10
?????? Operating System: Windows 10 (amd64) version 10.0
?????? Java Version: 1.8.0_131, Oracle Corporation
?????? Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
?????? Memory: 4158115688 bytes (3965 MB) / 6075449344 bytes (5794 MB) up to 13314818048 bytes (12698 MB)
?????? JVM Flags: 6 total; -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmn256m -Xmx12697m
?????? AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
?????? IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95
?????? FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 Optifine OptiFine_1.7.10_HD_U_E7 40 mods loaded, 40 mods active
?????? States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
?????? UCHIJAAAAAAAAA???? mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
?????? UCHIJAAAAAAAAA???? FML{7.10.99.99} [Forge Mod Loader] (forge-1.7.10-10.13.4.1558-1.7.10.jar)
?????? UCHIJAAAAAAAAA???? Forge{10.13.4.1558} [Minecraft Forge] (forge-1.7.10-10.13.4.1558-1.7.10.jar)
?????? UCHIJAAAAAAAAA???? CodeChickenCore{1.0.7.47} [CodeChicken Core] (minecraft.jar)
?????? UCHIJAAAAAAAAA???? smoothfontcore{1.7.10-1.15.1} [Smooth Font Core] (minecraft.jar)
?????? UCHIJAAAAAAAAA???? xaerominimap_core{1.7.10-1.0} [XaeroMinimapCore] (minecraft.jar)
?????? UCHIJAAAAAAAAA???? InputFix{1.7.10-v5} [InputFix] (minecraft.jar)
?????? UCHIJAAAAAAAAA???? splan{2.65-1.7.10} [Server Properties for LAN] (minecraft.jar)
?????? UCHIJAAAAAAAAA???? FastCraft{1.25} [FastCraft] ([迅速工藝]fastcraft-1.25.jar)
?????? UCHIJAAAAAAAAA???? smoothfont{1.7.10-1.15.3} [Smooth Font] (SmoothFont-1.7.10-1.15.3.jar)
?????? UCHIJAAAAAAAAA???? rcseffect{NEO-Special} [RCsEffect] (RC`s Effect Mod NEO-Special.jar)
?????? UCHIJAAAAAAAAA???? rcecustomitem{Beta 1.0} [RCE Extend:Custom Items] ([RCE附屬]自定義物品-亡靈戰(zhàn)爭Only.jar)
?????? UCHIJAAAAAAAAA???? customnpcs{1.2.1} [CustomNpcs] ([亡靈戰(zhàn)爭Only]CustomNPC-Plus-1.22.jar)
?????? UCHIJAAAAAAAAA???? AencEx{0.0.1} [AencEx] ([更多附魔1]MoreEnchantments-1.7.10-1.3.2.1.jar)
?????? UCHIJAAAAAAAAA???? me{1.3.2.1} [More Enchantments] ([更多附魔1]MoreEnchantments-1.7.10-1.3.2.1.jar)
?????? UCHIJAAAAAAAAA???? MoreEnchants{1.3.0} [MoreEnchants] ([更多附魔]MoreEnchants-MC1.7-1.3.1.jar)
?????? UCHIJAAAAAAAAA???? Stacksize{1.0} [Stacksize Mod] ([重置堆放數(shù)量]stacksize-1.7.10-1.2.jar)
?????? UCHIJAAAAAAAAA???? chunkpregenerator{2.1} [Chunk Pregenerator] (Chunk+Pregenerator+V1.7.10-2.1.jar)
?????? UCHIJAAAAAAAAA???? CompatibilityLayerForCustomSkinLoader{ALPHA-7} [CompatibilityLayerForCustomSkinLoader] (CompatibilityLayerForCustomSkinLoader-ALPHA-7.jar)
?????? UCHIJAAAAAAAAA???? creativecore{1.3.14} [CreativeCore] (CreativeCore v1.3.24 mc1.7.10.jar)
?????? UCHIJAAAAAAAAA???? CustomMainMenu{1.8} [Custom Main Menu] (CustomMainMenu-MC1.7.10-1.8.jar)
?????? UCHIJAAAAAAAAA???? flansmod{@VERSION@} [Flan's Mod Ultimate] (FlansModPlusUltimate1.1-1.7.10.jar)
?????? UCHIJAAAAAAAAA???? inventorytweaks{1.59-dev-152-cf6e263} [Inventory Tweaks] (InventoryTweaks-1.59-dev-152.jar)
?????? UCHIJAAAAAAAAA???? moreevent-key{1.0} [KeyEvent Mod] (KeyEvent-1.5.jar)
?????? UCHIJAAAAAAAAA???? MoreBows2{1.1} [More Bows 2] (MoreBows2-1.1【IcyCrystal漢化】.jar)
?????? UCHIJAAAAAAAAA???? opframe{0.1} [OnlinePictureFrame] (OnlinePicFrame+v1.0+mc1.7.10.jar)
?????? UCHIJAAAAAAAAA???? squidless{0.6.1} [Squidless] (squidless-1.7.10-0.6.1.jar)
?????? UCHIJAAAAAAAAA???? XaeroMinimap{21.10.27} [Xaero's Minimap] (Xaeros_Minimap_21.10.27_Forge_1.7.10.jar)
?????? UCHIJAAAAAAAAA???? DamageIndicatorsMod{3.2.0} [Damage Indicators] (【1.7.10傷害與血量顯示mcmap.cc】DamageIndicators++v3.2.0 (1).jar)
?????? UCHIJAAAAAAAAA???? MSM3{3.0.0a} [More Swords 3] (【更多劍】MSM-SNAP-3.0.0b-For-MC-1.7.10.jar)
?????? UCHIJAAAAAAAAA???? Backpack{2.0.1} [Backpack] (【更多背包】backpack-2.0.1-1.7.x.jar)
?????? UCHIJAAAAAAAAA???? PTRModelLib{1.0.0} [PTRModelLib] (【裝飾工藝品】2.4.2_1.7.10.jar)
?????? UCHIJAAAAAAAAA???? props{2.4.2} [Decocraft] (【裝飾工藝品】2.4.2_1.7.10.jar)
?????? UCHIJAAAAAAAAA???? chisel{2.9.5.11} [Chisel] (鑿子-2.9.5.11.jar)
?????? UCHIJAAAAAAAAA???? wolffsmod{1.0} [Wolff's NPCs] (坦克模型-vehicles-for-custom-npcs-1-1b.zip)
?????? UCHIJAAAAAAAAA???? malisiscore{1.7.10-0.14.3} [MalisisCore] (更多門附屬-1.7.10-0.14.3.jar)
?????? UCHIJAAAAAAAAA???? malisisdoors{1.7.10-1.13.2} [Malisis' Doors] (更多門-1.7.10-1.13.2.jar)
?????? UCHIJAAAAAAAAA???? CarpentersBlocks{3.3.8.2} [Carpenter's Blocks] (木匠方塊v3.3.8.2_MC_1.7.10.jar)
?????? UCHIJAAAAAAAAA???? potioncore{@VERSION@} [Potion Core] (藥水核心[修改].jar)
?????? UCHIJAAAAAAAAA???? bspkrsCore{6.16} [bspkrsCore] ([1.7.10]bspkrsCore-universal-6.16.jar)
?????? Chisel: Errors like "[FML]: Unable to lookup ..." are NOT the cause of this crash. You can safely ignore these errors. And update forge while you're at it.
?????? Profiler Position: N/A (disabled)
?????? Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
?????? Player Count: 1 / 10; [EntityPlayerMP['daqin_6666'/912, l='§3§l亡靈戰(zhàn)爭·彌賽亞 §w正式版V1.2.9', x=-2490.81, y=176.36, z=-357.42]]
?????? Type: Integrated Server (map_client.txt)
?????? Is Modded: Definitely; Client brand changed to 'fml,forge'
?????? OptiFine Version: OptiFine_1.7.10_HD_U_E7
?????? Render Distance Chunks: 16
?????? Mipmaps: 4
?????? Anisotropic Filtering: 1
?????? Antialiasing: 0
?????? Multitexture: false
?????? Shaders: null
?????? OpenGlVersion: 4.6.0 NVIDIA 516.59
?????? OpenGlRenderer: NVIDIA GeForce RTX 3080 Ti Laptop GPU/PCIe/SSE2
?????? OpenGlVendor: NVIDIA Corporation
?????? CpuCount: 20

這一部分是錯誤日志對系統(tǒng)信息和Minecraft模組加載情況的描述,如使用的jre版本、啟動的游戲版本、基本配置信息等(一般可以忽略)。之后的一長串UCHIJA及后面的內(nèi)容是模組加載情況,如果在啟動過程中崩潰,建議仔細(xì)檢查這一部分的內(nèi)容,正常加載的模組前方的標(biāo)識不會含有字母E(如果一切正常,則啟動完畢后的標(biāo)識是UCHIJA,A可能有多個),而出錯的模組前方的標(biāo)識一定會含有字母E。
注釋:
'U' = Unloaded 未加載
'L' = Loaded已加載
'C' = Constructed 已構(gòu)建
'H' = Pre-initialized 預(yù)初始化
'I' = Initialized 已初始化
'J' = Post-initialized 后初始化
'A' = Available 已可用
'D' = Disabled 禁用
'E' = Errored 錯誤
本樣例中模組加載沒有出錯,故此部分可以忽略。

第二部分 通過報錯尋找解決方法和樣例解決
通過分析錯誤報告,我們可以知道發(fā)生的報錯是什么。但是知道問題還不夠,如果要解決問題,則需要尋找對應(yīng)的解決方法。
不會(懶得)自己解決問題的玩家:
1.到mcbbs(我的世界中文論壇)的mod問答版提問(記住一定要上傳錯誤日志)
2.亡靈戰(zhàn)爭官方交流一群里尋找熱心市民或者常見問題解答(僅針對標(biāo)題所示地圖)
想自己解決問題的玩家:
1. 去百度搜索(請盡可能參考mcbbs或mcmod或github之類比較權(quán)威的網(wǎng)站的搜索結(jié)果)發(fā)生的報錯(即java.lang.XXXException:XXX或Description:后的內(nèi)容),但一定要加上與我的世界有關(guān)的內(nèi)容(否則會有一大堆Java編程出錯的解決方法)
搜索引擎:谷歌>必應(yīng)>百度
來自David_Black的吐槽
2.根據(jù)報錯的類型、錯誤日志最開頭對問題的描述,以及拋出異常的棧幀和細(xì)節(jié)描述中流露出來的關(guān)鍵信息結(jié)合個人經(jīng)驗進(jìn)行推斷(廢話)。如果是mod出錯則可以嘗試更新mod版本、回退mod版本或刪除mod等。請務(wù)必事先閱讀mod在mcmod或mcbbs上的說明和用戶的評論?。。?/strong>
在此樣例中,這是由于實體的藥水效果矛盾而導(dǎo)致的崩潰,而且去除矛盾的藥水效果并不具有可操作性,因此比較適合的解決方法就是刪除錯誤實體然后重新進(jìn)入存檔。
1.使用mcedit/amulet打開存檔,然后刪除錯誤實體;
2.利用forge自帶的功能,到.minecraft\config\forge.cfg里把removeErroringEntities的選項由false改成true。
一部分常見的崩潰原因及其相應(yīng)的解決方法也已加入到亡靈戰(zhàn)爭常見問題解決方案4.0中,如有需要請自行查閱。

尾聲:
錯誤日志的分析是一個經(jīng)驗積累的過程,并不是一蹴而就的,優(yōu)秀的分析者也是從零開始一步步走上來的。本文檔的目的僅僅只是為了讓你初步掌握錯誤日志的基本結(jié)構(gòu)、以及最基本的分析方法,初步學(xué)會提取關(guān)鍵信息。
如果這篇文檔有一句話能幫到你,我就已經(jīng)成功了。
祝各位盡可能避免遇到崩潰而(被迫)打開此文檔~~
——MF(文檔作者,制作組成員)
David_Black(屁也不是)

