不管你用的什么编程语言,从你接触她开始就注定了你们相爱相杀的一生。为了增加生活乐趣,她会时不时给你来点小惊喜。
无论是在论坛还是交流群,时不时的都会有人问:程序不能运行了,怎么办?程序出错了怎么办?有时候运气好了还会有人冒个泡多问一句,但大多数时候,碰到上面的问题,是得不到回复的。主要原因在于提问方式,关于提问的智慧,这里不说这些。
其实在编程过程中出现的很多问题别人大多也遇到过,而且网上有解决答案。只需要两步:
以上能帮你解决大多数小错误,但是当遇到稍微麻烦一些的问题时,该怎么办呢?
下面以MATLAB为例,说一下当程序出现错误时,如何根据提示定位到实际发生错误的地方,然后更改并顺利运行程序。
Skew-T是气象领域比较常见的一种图,气象家园中有些帖子中提供了matlab脚本[注1],可以绘制此类图。大多数情况下,帖子中提到的脚本都能顺利绘制出图,但是有些情况下会出现一些问题。比如当绘图所需要的探空数据较少时。探空数据由怀俄明大学探空数据网下载[注2]。
如下图,完整的各参数值只有6行,每个参数只有6个值,这就会导致程序运行出错。
运行程序之后会出现图中所示的错误提示。按照上图标注的顺序:
在赋值 A(:) = B 中,A 和 B 中的元素数目必须相同。
错误提示表明,A数组和B数组大小不同。需要检查这两个数组。那哪两个数组对应A和B数组呢?
生成序列时,步长必须为大于等于0的数,而round执行的是四舍五入操作,当数小于0.5时结果为0,从而导致程序出错。只要N小于10,上述程序就会出错,这是skewTlogP_plot 程序的bug。
解决方法:将下图红框中所示代码添加到源程序中即可。
除了平时上面的例子之外,不得不吐槽的是国内的闪电数据格式,是目前遇到的处理起来最让人头疼的数据,没有之一,不是因为数据结构复杂,而是数据本身出错率高。
下面以处理闪电数据为例,讲一下如何定位程序错误[注3]:
由于闪电数据的数据量大,通常需要进行批量处理,而由于闪电数据的错误率高,说不定某一个文件就会有一行记录出错,或是某一行出现乱码。如果不在处理过程中额外输出信息的话,想要确定真正的错误内容会比较麻烦。
如下图,处理过程中出现的问题:
通过以上两个示例可以发现,定位错误的时候是有流程的:
无论是对于新手还是老手来说,MATLAB在debug程序方面都是非常友好的,其强大的图形界面也是MATLAB的优势之一。编程语言都是互通的,无论你使用的是python,matlab,ncl,julia还是R,或go,对了最古老的语言之一——fortran,当程序出错的时候都会抛出一个错误提示,只要你理解了错误提示,然后掌握一定的debug技巧,基本上能解决大部分问题。
当然,有些错误是很难发现的。比如:程序能运行,也没有错误提示,但是最后的结果缺不是你想要的。遇到这种情况,只能去看程序源码,然后根据变量信息来排除。这时候,除经验和技巧之外,需要的就是细心。
注1:http://bbs.06climate.com/forum.php?mod=viewthread&tid=27252&extra=
注2:http://weather.uwyo.edu/upperair/sounding.html
注3:http://bbs.06climate.com/forum.php?mod=viewthread&tid=42183&extra=
注4:链接: https://pan.baidu.com/s/1geYfwyv 密码: 2m5y
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有