如何处理程序的错误---记一次犯错经历

在完成Mesh导入后,准备试着导入其他的X文件来看看效果,结果一直提示我“D3DXLoadMeshFromX()—Failed”。

1.我考虑到是否是X文件结构可能有所不同,即格式差异,去查找相关资料,未果。

其中了解到x文件的结构

(转载)http://blog.csdn.net/lirunfa/article/details/7215548上有详细的说明。

其中常用的模版类型值得留意。

2.仔细检查语法调用是否有错,替换至原先的模型文件后,正常显示。

3.设置断点,查看相关指针为空值(此时始终认为自己文件位置没有放错,而没有深究)。

4.尝试从函数返回信息入手,查询Wondows DirectX Graphics Document 获得“D3DXLoadMeshFromX()“的详细介绍,

没有获得如何知晓返回信息的方法。然后就在这时,无意间看了下模型文件放的位置才突然发现自己放的文件位置有误。

当BUG找到后,我并没有感到高兴,而是为自己低效的BUG排除方法和混乱排除顺序进行了自责,并开始思考如何高效的解决BUG的方法:

1.当遇到BUG时(如果遵循良好的编码原则--对特殊函数、指针、回调值进行判定,会直接定位到BUG出现区域,从而使得排除范围减小,

而语法错误之类的应当避免并且编译器会有提示)对出现区域进行检查。

2排除时手段不能太过单一,我暂时只会简的单设置断点并添加监视,对于编译器提供的各种调试工具(这一点上Android编程中 DDMS Logcat就有相当详细的记录,

)应当有更多的了解。VS中也有:

调试子菜单中-》窗口项中也有强大的帮助功能,应当学着使用。

3.从代码入手,手动获得相关信息也是非常必要的手段,例如开头提到的提示错误,就是通过MessageBox手动设置的。

关于HRESULT http://msdn.microsoft.com/zh-cn/library/ms690088(en-us,VS.85).aspx  中有详细的介绍。

原文地址:https://www.cnblogs.com/moniza/p/3548593.html