游戏开发论坛

 找回密码
 立即注册
搜索
查看: 39966|回复: 43

你学会调试程序了吗?

[复制链接]

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

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

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

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

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


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

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

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

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

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

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

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

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

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

未经许可,严禁转载

19

主题

202

帖子

214

积分

中级会员

Rank: 3Rank: 3

积分
214
QQ
发表于 2004-7-14 15:32:00 | 显示全部楼层

Re:你学会调试程序了吗?

置顶吧,顺便可以在群里发个消息

这几天遇到几个人都不很懂VC的使用

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
 楼主| 发表于 2004-7-14 15:36:00 | 显示全部楼层

Re:你学会调试程序了吗?

楼上的帮忙发一下吧。Thanks :)

19

主题

202

帖子

214

积分

中级会员

Rank: 3Rank: 3

积分
214
QQ
发表于 2004-7-14 17:05:00 | 显示全部楼层

Re:你学会调试程序了吗?

我有一本关于Visual C++的电子书

Microsoft Visual C++ 6.0 程序员指南

上传到FTP

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-7-14 17:26:00 | 显示全部楼层

Re:你学会调试程序了吗?

这个问题怎么像我们vc++老师问的?

4

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2004-7-14 17:30:00 | 显示全部楼层

Re:你学会调试程序了吗?

有些时候程序只在release下出错 可以在出错模块疯狂MessageBox()
^_^

19

主题

202

帖子

214

积分

中级会员

Rank: 3Rank: 3

积分
214
QQ
发表于 2004-7-14 17:45:00 | 显示全部楼层

Re:你学会调试程序了吗?

用MessageBox不如用ASSERT或者打log啦

nowpaper 该用户已被删除
发表于 2004-7-14 17:57:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

22

主题

156

帖子

156

积分

注册会员

Rank: 2

积分
156
QQ
发表于 2004-7-15 10:48:00 | 显示全部楼层

Re:你学会调试程序了吗?

呵呵,不错,我只知道一点,这次好多了:)

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-7-15 11:58:00 | 显示全部楼层

Re:你学会调试程序了吗?

其实,感觉大部分程序出错都是因为指针超界之流。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-10 16:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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