= 创作分享 =
百科杂谈
【科普向】震惊!崩溃报告竟然有这种用处! ...

【科普向】震惊!崩溃报告竟然有这种用处!

NoName德里奇 于 2018-8-9 10:43 ( 4月前 ) 分类。  [复制链接] [显示全部楼层] [打印]
本帖最后由 NoNamePlay 于 2018-8-9 10:49 编辑

楼主原创。如果你在其他地方见过这篇文章,请注意那里作者的ID。



什么是崩溃报告?
不少大佬遇到过游戏玩着玩着,突然游戏崩溃,跳出来一个内容乱七八糟的窗口,满纸都写着这样的东西:
  1. [11:41:09] [main/INFO] [FML]: Loading tweaker fr.lolo13lolo.mctitle.TheTweaker from [美化]mctitle.jar
  2. [11:41:09] [main/WARN] [FML]: The coremod mods.defeatedcrow.asm.AppleMilkCorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
  3. [11:41:09] [main/WARN] [FML]: The coremod codechicken.core.launch.CodeChickenCorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
复制代码
或者写着这样的东西:
  1. at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method)
  2.         at org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(WindowsPeerInfo.java:52)
  3.         at org.lwjgl.opengl.WindowsDisplay.createWindow(WindowsDisplay.java:252)
复制代码
大佬们横竖睡不着,躺着看了半夜,才从字缝里看出字来,满篇都写着三个字是“看不懂”。
有一些启动器甚至不会把这个窗口弹出来,这导致很多大佬对于自己游戏的崩溃一头雾水,拿到百科论坛来问其他大佬的时候,
却描述不出自己的游戏出了什么问题,除了“它崩溃了!”似乎什么也说不出。
这可就很难受了。百科论坛有大佬能解决你的崩溃问题,但是他们没有看到你的游戏是怎么崩溃的,不可能直接告诉你解决的办法。
而要想让他们看到你的游戏出了什么问题,最直接的就是贴上这个又长又臭的崩溃报告。

崩溃报告在哪儿?
不是所有的启动器都有自动弹出崩溃报告的功能,我也只见到PCL启动器会这样干。
它会被放在你的游戏文件夹.minecraft下的一个crash-reports文件夹,以游戏崩溃的时刻年-月-日-时-分-秒.txt格式命名。
或者不在那个文件夹里,而是以hrr_pid开头命名的一个txt文件。

这看不懂的玩意,有什么用?
用处可大了!但是首先,它得遇到一个看得懂它的人。
因此,对于实在不想读这个崩溃报告的朋友,
如果你选择在百科论坛发帖求助,应该设法让它出现在求助帖子里
代替实际上没什么用的一句“我的MC崩溃了!救命!”,让那些有“救命”能力的大佬看到你的崩溃报告。
我常常打一个比方,去医院和医生说:“我肚子疼!”
糟了,肚子疼的病因是最复杂的(不信你可以找个医学专业的朋友或亲属验证一下。)
医生一定会问:哪儿疼?有多疼?是持续的还是一阵一阵的?
只向医生抱怨“我很难受”是治不好病的,医生还需要更加详细的信息。
对于解决Minecraft的崩溃问题,也是同样道理。而这个信息就体现在崩溃报告里。
把它贴在你的求助帖子里,可以帮助别的大佬了解你的游戏崩溃的可能原因,并提出一些靠谱的建议。

但是,如果你愿意读一读这坨报告,并有一定的技巧,你不需要懂得太多编程知识,
也可以粗略地知道自己的Minecraft出了什么问题。这个我会在后面稍微讲解一些。
我的水平也非常有限,欢迎大佬们在回复里补充,我也长长知识。

崩溃报告怎么贴比较好?
终于进入正题。直接复制粘贴在帖子里虽然也可以,但是看起来总有一点不舒服。
这里提供一个简单易行的方法,可以让大家避免上传文件和下载文件,以一种优雅的方式贴上崩溃报告。
打开这个网页:https://paste.ubuntu.com/
可以看到里面有四个框,最下面有一个“Paste!”按钮。
第一个框随便填点什么,第二行和第三行的框不用管,
把你的崩溃报告全选、复制、粘贴到最大的第四个框,然后点击“Paste!”
过了一会,会打开一个新的网页,上面是你的崩溃报告。
把这个网页的链接复制,粘贴到你的求助帖子里,就显得优雅多了。

更高明的求助手段:向模组作者反馈
如果你知道某个模组的官方页面,比如Minecraft CurseForge,比如Minecraft Forum,
比如某些大佬在MCBBS,在百科主站,发布了原创模组——他们如果仍然在更新和维护这个模组,
一定会留下一个联系方式:“反馈Bug请到xxx网址”。
这个网址,如果是GitHub,
(例如我们认识的交错次元模组,它的Bug反馈网址是 https://github.com/Angry-Pixel/The-Betweenlands/issues ),
那就太好了!
这种情况在1.12.2模组中非常常见。它们常常是测试版本,在不断更新和完善当中,
如果的确是模组本身的问题,
你完全可以告诉模组的作者,让TA知道,你写的这Bug把我游戏搞崩溃了!
不仅非常解气,而且还帮助了模组作者修复了模组的问题,之后的玩家就不会遇到这个情况了。
岂 不 美 哉
那我们应该怎么做呢?
1. 按照上一节的步骤,准备好一个崩溃报告的链接。
我之所以选择了ubuntu提供的粘贴板,是因为它大多数时候都能轻松打开,不需要魔法;外国友人也很容易打开它。
2. 记录下你的Minecraft版本、Forge版本号(如果是LiteLoader模组,可能要有LiteLoader的版本号)、Mod版本号。
3. 所有模组的名单。如果你所玩的整合包在CurseForge、FTB等国外知名MC网站发布过,就用那个发布网页的链接代替。
4. 简单描述一下Bug的状况,或者简单描述一下如何制造这个Bug
比如:用你这个模组的xx镐子挖xx方块会导致游戏崩溃、在安装了xx模组时,用你这个模组的yy物品会崩溃,等等。
然后找到作者给你提供的那个反馈Bug的地方——
等等!虽然你是去投诉别人的产品,但是礼貌还是要有的。
如果你要反馈的那个模组作者说英语,
尽你所能避免严重影响阅读的语言错误,不要求全对满分;不要滥用大写和感叹号。用简单的句子就好。
如果你实在不想写英语,可以略去第4项内容,
这样崩溃报告只是一个链接、那些版本号都是数字,Mod名称可以查到,复制粘贴即可,完全不需要英语能力
之后,或许在一段时间后,作者就会给你回话了。如果TA解决了你的问题,记得回复一个Thanks.
如果TA没有... 原谅他。制作模组不是一个职业,或许那位作者很忙。他会看到你的反馈的。

我想自己读读看:一种阅读崩溃报告的方法
任何崩溃报告都可以读一读,自己推测一下原因。尤其对于那些停更、停止维护的模组,自己想办法就更加重要了。
崩溃报告这么长,全部读下来吗?我自己也做不到。
我个人的一个方法是,读重点。
我举一个例子。
  1. ---- Minecraft Crash Report ----
  2. // On the bright side, I bought you a teddy bear!       //这是崩溃报告的头部,从这里开始。
  3. Time: 18-8-6 上午11:41
  4. Description: Initializing game  //这是崩溃的概述,说明问题出在了什么地方。
  5. org.lwjgl.LWJGLException: Pixel format not accelerated
  6.         at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method)
复制代码
正如一位大佬在楼下指出的那样,崩溃报告的重点就在于头尾。
如果你想替别人解决问题,拿一些EU,那你需要读一读最后的游戏运行信息,
以免别人贴了崩溃报告,你还问“MC版本?Java版本?”那就有点明知故问了。
如果你读的是自己的游戏崩溃的报告,你对自己游戏的信息应当相当清楚,甚至连尾都可以不读,
只读Description和第一个at的前一行,也就是上面这段的倒数二、三行。


有些游戏崩溃报告是可以非常直接地看出崩溃原因的,例如下面这个:
  1. Description: Initializing game

  2. java.lang.OutOfMemoryError: Java heap space
复制代码
Out Of Memory. 内存不足。
加内存,或者加内存条,或者改用独立显卡,就可以解决这个问题。
但是对于我刚才引用的那个崩溃报告,“org.lwjgl.LWJGLException: Pixel format not accelerated”,
像素格式没有加速?这是个什么玩意?
我们先猜猜看。像素,与图像有关;加速,图像处理有“硬件加速”,图像,硬件,可能与显卡有关。
这时候搬出搜索引擎:复制这句话,丢给百度搜索。
搜索结果是:

第二个搜索结果开篇就这样说(我画了重点)

果不其然!
我们不仅验证了猜测,而且还找到了解决问题的办法。
虽然有那么一点麻烦,但是这同样也是一个探索未知的过程,
算是一个硬核METAGAME吧(笑)。

指明引用源和致谢
本文中的崩溃报告示例来自这篇MCBBS的求助帖子。如果我这篇教程里讲的没有很好地解决问题,
大佬们可以拿着解决问题的法子来打我的脸,我非常欢迎,毕竟人都是在尝试和错误中进步的。
我在引用时没有征得那位求助者的同意,如果将来引起任何的不愉快,我在此先作深刻的道歉。

被以截图形式引用的教程“解决 Win8 系统下 Minecraft 错误 Pixel format not accelerated”,
特向此教程原作者和网站致谢,原链接:https://haizs.com/post/how-to-fi ... ccelerated-in-win8/

另外,推荐各位阅读一篇其他大佬编写的,更加详细的崩溃报告阅读教程:
https://bbs.mcmod.cn/thread-1456-1-1.html
对希望了解崩溃报告的朋友一定会有帮助。

写在最后的一些话
大概就是这样。
小声哔哔几句,尽管你可以使用Vanilla Fix之类的模组阻止游戏崩溃,也可以用其他玄学方法解决崩溃,
但是崩溃报告往往能帮助MOD作者发现Bug,这对于正在开发中的新模组,比如不少1.12.2的模组是很重要的。
没准就被作者修好了呢?
再说,也比干着急好得多。
最后,祝各位的游戏永不崩溃。


评分

参与人数 6RF +26 Vis +6 收起 理由
雾雨魔理幸 + 5 + 2 给大佬递分
youyihj + 5 + 2 给大佬递分
sxjsxj + 5 给大佬递分
Gingerbread + 5 + 2 MCBBS越玩越溜了
Lucky_H_ling + 5 给大佬递分
大企鹅额额 + 1 你们城里人真会玩

查看全部评分

更休落魄耽杯酒,亦莫猖狂爱咏诗。
        今日捉将官里去,这回断送老头皮!

发表于 2018-8-9 10:43:29 | 显示全部楼层 |阅读模式

回复 | 举报

该帖共收到 7 条回复!
抢沙发10小时无人回复惨案
发表于 2018-8-9 20:59:28 | 显示全部楼层

回复 | 支持 | 反对 举报

Gingerbread 发表于 2018-8-9 20:59
10小时无人回复惨案

估计是被NoNamePlay大佬一大堆又臭又长的崩溃报告以及这么多繁杂的知识给震惊了
你猜签名是个啥?
牛顿:肯定是某种漂浮在外太空中的等离子化学物质所组成的气体。
老师:你们都错了……签名就是一份作业这东西是我专门布置给学生的。
重生:错!签名这东西是用来测出一个人的性格的!
发表于 2018-8-10 12:42:28 | 显示全部楼层

回复 | 支持 | 反对 举报

MashKJo 发表于 2018-8-10 12:42
估计是被NoNamePlay大佬一大堆又臭又长的崩溃报告以及这么多繁杂的知识给震惊了 ...

又臭又长?
发表于 2018-8-10 13:52:20 | 显示全部楼层

回复 | 支持 | 反对 举报


是的,又臭又长。
当然,如果真的有编程相关的知识,
那么是真的可以从我略去不看的那些乱七八糟的东西里读出问题的,
而且更准确。不过那就超出我的知识范围了。
更休落魄耽杯酒,亦莫猖狂爱咏诗。
        今日捉将官里去,这回断送老头皮!

发表于 2018-8-10 17:32:13 | 显示全部楼层

回复 | 支持 | 反对 举报

可惜的是VanillaFix没有1.7.10版本
发表于 2018-8-10 18:20:25 | 显示全部楼层

回复 | 支持 | 反对 举报

Gingerbread 发表于 2018-8-10 18:20
可惜的是VanillaFix没有1.7.10版本

挺好的,那就必须得读读崩溃报告了。
更休落魄耽杯酒,亦莫猖狂爱咏诗。
        今日捉将官里去,这回断送老头皮!

发表于 2018-8-11 04:26:03 | 显示全部楼层

回复 | 支持 | 反对 举报

NoNamePlay 发表于 2018-8-11 04:26
挺好的,那就必须得读读崩溃报告了。

是啊,还多亏sxj大佬的教程
发表于 2018-8-11 10:37:51 | 显示全部楼层

回复 | 支持 | 反对 举报