程序设计的过程中难免会出现错误,你除了可以使用开发工具或第三方工具所提供的调试、分析功能查错外,Ycnd本身也提供了一些功能来帮助程序员排除编程错误。
下面将分别介绍:
1、利用引擎提供的调试文件;
Ycnd可以将引擎执行过程中的信息写到指定的文件中,以供程序员参考。
要使用这个功能必须要在引擎初始化时正确设定,具体方法为:
a、如果采用的是通过ini文件初始化的方法,则需要将文件中的“UseLog”项和“Log”项设置为有效值。
例:UseLog=1
Log=Debug.txt
b、如果采用的直接填充初始化信息结构的方法初始化,那么只需将结构体成员“m_bUseLog”和“m_lpLog”设置为有效值即可。
例:
设置好后,Ycnd在执行的过程中就会输出调试信息了。
下面列举一段调试文件的内容:
Ycnd 2D 图形引擎 v1.4.323.102 日志文件
---------------------------------------------
Copyright 2009 (C) Lizcst Software Lab
Lizcst Software Lab 版权所有,侵权必究!
---------------------------------------------
时间: 事件:
2009.08.27, 21:32:47 开始初始化引擎!
2009.08.27, 21:32:47 ---------------------------------------------
2009.08.27, 21:32:47 初始化绘制窗口
2009.08.27, 21:32:47 --注册主窗口类
2009.08.27, 21:32:47 --注册主窗口类,完成!
2009.08.27, 21:32:47 --创建主窗口
2009.08.27, 21:32:48 --成功创建主绘制窗口
2009.08.27, 21:32:48 初始化窗口完成!
2009.08.27, 21:32:48 ---------------------------------------------
2009.08.27, 21:32:48 初始化输入输出系统
2009.08.27, 21:32:48 输入输出系统初始化,完成!
2009.08.27, 21:32:48 ---------------------------------------------
2009.08.27, 21:32:48 以下为D3D初始化过程...
2009.08.27, 21:32:48 --使用硬件抽象层(HAL)
2009.08.27, 21:32:48 ------------------设备信息-------------------
2009.08.27, 21:32:48 --D3D 设备驱动: 未知!
2009.08.27, 21:32:48 --描叙: 未知设备!
2009.08.27, 21:32:48 --版本: 未知版本号!
2009.08.27, 21:32:48 ---------------------------------------------
2009.08.27, 21:32:48 --开启深度缓冲
2009.08.27, 21:32:48 --开启深度缓冲
2009.08.27, 21:32:48 --使用硬件顶点运算
2009.08.27, 21:32:48 D3D初始化成功完成!
2009.08.27, 21:32:48 ---------------------------------------------
2009.08.27, 21:32:48 初始化其他资源
2009.08.27, 21:32:48 --初始化音频系统
2009.08.27, 21:32:48 --初始化音频系统,完成!
2009.08.27, 21:32:48 --初始化几何管理系统
2009.08.27, 21:32:48 --初始化几何管理系统,完成!
2009.08.27, 21:32:48 初始化其他资源,完成!
2009.08.27, 21:32:48 ---------------------------------------------
2009.08.27, 21:32:48 引擎初始化成功完成!
2009.08.27, 21:32:48 进入到主工作循环中。
2009.08.27, 21:32:53 工作循环退出。
2009.08.27, 21:32:53 引擎终止!开始清理资源。
2009.08.27, 21:32:53 清理其他资源
2009.08.27, 21:32:53 清理D3D资源
2009.08.27, 21:32:53 清理程序资源
2009.08.27, 21:32:53 引擎清理完毕!
2009.08.27, 21:32:53 引擎终止!
所有成功或不成功(示例中没有)的操作,Ycnd都会记录到文件中,这样程序员就可以知道出错是由哪个环节导致的。
2、利用引擎提供的函数GetLastErrorInfo获取上一次函数调用出错的原因:
函数GetLastErrorInfo可以返回程序上一次调用Ycnd函数的出错原因,Ycnd中的大部分函数都支持这种出错信息返回的方式,利用它可以获得比调试文件更加详细的信息。
该函数原型如下:
该函数可能返回的信息主要有:
需要注意的是:GetLastErrorInfo返回的信息会被下一次函数的调用所覆盖,因此,必须在函数调用出错后立即调用GetLastErrorInfo来查看出错原因,否则可能会丢失出错信息!