写给没有编程基础的人看的。有编程基础的人都知道些最基础的方法。
对很多刚入门的mod制作者来说,出了错不知道如何解决,是阻碍自己进步的重要原因,但是,拿着这些问题问熟悉Mod制作的人,他也不好回答。因为出错崩溃的原因是很多的,要一个个排查非常花费时间精力,别人没有义务为了你的编程错误浪费掉自己一个上午的时间。所以,不如学习一些简单的Debug方法,自己动手解决。这些方法不仅能够帮助Debug,甚至还有助于学习和了解官方API。
运行日志
log(运行日志)是游戏运行过程的记录,储存着很多重要的信息。对Debug来说,知道的信息越多,就越容易找到出错的原因。
Mod出错的一大类别就是游戏崩溃,此时会弹出一个warning界面,并打印出错的信息。这些信息也会被记录在运行日志里。大多数bug,都可以通过阅读运行日志来了解出错的大概位置。
绝大多数错误都是编程的问题,这种错误,会被运行日志记录下来,基本的标志为 LUA error,然后会打印追踪出错的位置,并提示错误的原因。所以,打开运行日志,搜索lua error,就能很快确定出错代码位置,然后仔细调试,一般就能解决问题。
运行日志所在位置:
单机 log.txt
联机版,开房间不开地洞进入游戏世界,则信息记录在客户端的运行日志上。
如果是开地洞或者开服务端,然后进入游戏的话。则有客户端和服务端两份运行日志,各自记录不同的信息。有一些造成全体掉线的bug,很可能就是这个bug造成了服务端运行错误导致崩溃,客机连不上服务器导致全体掉线。这时候在客户端一般看不到有用的信息,只有从服务端运行日志才能看到关键信息。
客户端 client_log.txt
服务端 server_log.txt
二分法
由运行日志找到了出错的大概位置之后,就需要开始解决问题了。Debug主要还是依靠你的逻辑思维,但有时候自己感觉逻辑上没错却遇到了错误,就需要借助二分法来获取更多信息以纠正自己的想法了。
所谓二分法就是通过加入某些标志来使得运行过程分成两截。看看是哪一截出了错误。然后再在出错的那一截进行逻辑分析,如果还想不明白就继续截。
由于官方没有提供给我们断点调试工具,所以我们只能通过最简单最原始的print方法来做二分了。
在你想要截断的地方加入print语句。比如print("duandian"),如果这条语句被执行了,就会在log上输出duandian。你同样也可以在控制台看到这个输出(如果没有被其它信息覆盖掉)。
测试数据
有时候我们遇到的不是崩溃问题,而是没有实现想要的功能,这时候除了用二分法寻找原因之外,我们还可以用print来打印变量,根据变量的变化情况进行做判断。
网友评论