会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
游戏开发 > 程序设计 > 优化调试
如何在DirectX程序中发现及减少BUG
发表日期:2006-08-28 21:50:05作者: 出处:  

  程序编译通过并不能代表已经完成,一个稳定的程序应该尽可能除掉BUG。下面是我在编写DXGuide过程中积累的一些经验,对初学者也许有用。
编程过程及调试以前的工作:

  编译以前注意将编译警告设成最高,在VC5或VC6中是/W4。许多隐藏的错误,如变量没赋值就使用等,在这个级别下编译器就会对此发出警告。

  编程中可采用输出调试信息到一个文件中,许多BUG就可以在检查LOG文件时发现。

  由于DirectX是基于COM的,所以在最后释放时应查看每个接口的Release()的返回值,如果不为0,说明没有正确释放干净。

  检查每一个调用的返回值,如有错误立刻显示出来,做到这点并不难,可以将所有需调用的DirectX API全部封装在类中,在类中实现检测返回值的功能。

  用BounsChecker查资源没有释放的BUG。

  尽可能在不同的环境下进行试运行,一些程序在某些环境下正确,在另一些环境却工作不正常,那么很可能是您没有考虑周全(当然这点很难避免, 所以要多多检测),由于DirectX程序跟硬件关系比较密切,最好要经过尽可能多的硬件组合的考验。

  使用调试版的DX,到“控制面板”中将Debug Level 设到不为0,当然越高调试信息越多,太多未必好,会把关键信息掩盖了,对查“Invalid Param”特别有用。

  使用MFC,关于是否在写DIRECTX程序中使用MFC,我也看过了不少争论,大家见仁见智,各有各的理由,而我倾向于使用MFC,辅助函数多,久经考验,BUG较少,实践说明使用MFC对速度影响不大。[注(Mar-22-2001):我现在的代码已经不用MFC了,但我得说我从MFC学到了很多东西,我仍然觉得对以前用过MFC的初学者来说MFC是好工具,不过如果你的C++学得足够好的话我建议使用STL。]


调试:

  记住,在您只有一台计算机并且不是多显示器的情况下,如果您使用GUI调试器(如VC等),千万不要设置断点于全屏方式运行的DirectX程序,不然看不到调试过程会很痛苦。把程序改成窗口方式运行再进行调试。

  有两台联网PC条件的朋友最有效的方法当然是双机网络联调了。只要有一台机上装有VC5或VC6就可以,另一台运行MSVCMON这个小程序就可以进行调试了,不管是在全屏下还是LOCK代码内,都可设置断点调试,十分方便,是调试比较奇怪BUG的有效方法。至于具体如何实现双机联调可以看VC的联机文档。

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00267