【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3427|回复: 0

[优化/异常处理] 你学会调试程序了吗?

[复制链接]
发表于 2006-4-20 14:11:27 | 显示全部楼层 |阅读模式
新人在编写代码的时候难免遇到各式各样的问题,有的复杂有的简单,实际上很多问题并不难解决,有些甚至是你粗心大意导致的后果,有这些问题都没什么,关键是你要学会如何去调试程式,在程式执行过程中遇到问题如何去解决问题,我们来简单说一下常用的调试方式:

  一、断点,就是让我们程式执行一半的时候停止下来,然后我们察看我们定义的变量值是否正确,比如我们人物的坐标,地图的位置等等。在VC下面,你只要简单的按F9就能轻松进行断点操作,在遇到程式未知错误的时候,你甚至可以用这个方法来检测你程式到底当在哪里,然后做进一步的错误分析。使用这个方法需要注意的是,你的程式最好是在DEBUG模式下进行,虽然可以在Release模式下进行断点,但毕竟调试信息少了,可能并不利于调试。

  二、信息输出,就是程式一边执行,一边输出一些信息,当然,这些信息就看你如何设定,用这个方法就可以很及时的了解程序内部的数据变化情况,然后监测程式是否按照我们的预想来执行。输出的方法很多,如:建立一个log文件,然后只要简单的将调试信息输出到文件中即可;或者通过VC IDE环境下的Output窗口来进行,可以用OutputDebugString("...")这支函式来进行输出。

  三、排除法,你实在无法分析哪里出错,你就开始注释,把功能模块一个一个注释掉,看哪个模块出问题,然后再继续深入细化,虽然这个方法土,但却非常有效。


常见错误:
  一、语法错误,这个不用多说,检察代码关键字拼写,看看语法有没有错误的地方。

  二、变量未声明,新人经常会犯这样的错误,一个变量定义的域跟调用它的域不同,从而导致变量非法调用,这个只要留意文件的包含关系应该也是不难解决。

  三、连带效应,有两段代码单独执行没问题,但是放在一起很容易出错,遇到这种情况你就要赶快检察一下全局变量、函式是否有冲突,注意,有时候这些错误并不会体现在编译的过程,而直接体现在执行过程,甚至有时候会有虚假的“执行正常”。

  四、变量值的有效性,很多时候我们会主管认为某些变量的值是理所当然的,但往往有些时候,它们的值并非如我们所愿,建立有效的变量验证机制是非常有用和必要的。

  五、合理的算法,但不合理的结果,一些算法看起来简单,便在脑子里模拟程式执行,实际上可能并非如此,把算法拆开一步一步将结果输出,这样很快就可以找到与你设想不同的地方。

  六、数组越界,我们知道,数组通过下标来对相应的位置进行访问,如果不注意很容易因为下标超出你所定义数组的最大值而产生越界操作,这种错误查找比较困难,也可能会此错误的操作而导致其他地方出错。

  七、指针溢出,这个是非常容易出现的问题,包括高手也经常会出现这样的情况,出现这种错误非常头疼,往往要等到程序执行一段时间后才反应出异常,良好的代码编写习惯这时候就显得重要,这个问题就只能靠时间不断的做检测来进行除错。

  一年以来都没怎么写代码了,今天心血来潮把上次未完成的帖子完成,希望能够对新人有所帮助,也希望大家指正批评。

Author: 林德辉
Copyright GameRes
http://www.gameres.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-5-19 00:28

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表