【cocos2dx进阶】调试篇(1)基础介绍

  好多同学都要求干货分享,嗯,那我就直接跳过大量的基础介绍啥的,直接从重点讲起,如果有不明白的,请自行google吧,尽可能的我也会给出相关的链接,毕竟这个系列不是从零开始的,所以,请见谅。


 从哪里开始,嗯,先从调试器入手吧。cocos2dx是一个跨平台的游戏引擎,主要的开发工具支持win32/mac,于是对于调试器我们选择的余地就大了许多,visual studio,xcode,也可以用eclipse 或者adt下直接用gdb。

wKiom1LZWq-irn10AAA8nLWkxZQ878.jpgwKioL1LZWozBO0KuAADLKSEeuso300.jpgwKiom1LZWrDyi_yrAADnfdNggUs048.jpg


就我个人而言,我还是喜欢visual studio,稳定、高效、快速、友好,甚至于在放弃了window转投mac之后,为了能使用vs来调试特意装了一个windows的虚拟机。


下面的文章都是围绕着visual studio展开的,当然运行在win32上。


对于C++程序员来说,内存管理绝对是最重要的一关,各种奇怪的问题都和内存有关。哪怕是多年的老手,一不留意,也会出各种问题。要少出内存问题,一个是写出高质量的代码,另外的就是能快速定位到问题的代码。好,接下来就是干货时间了,……


wKioL1LZXEuxV3J3ABGxl_OODe4927.jpg首先,自然是好好学习下C++,特别是指针相关的内容,知道了为什么才能少犯错。推荐的是Stephen Prata的《C++ Primer plus》,经典教材,你值得拥有。
提示:
1.《C++ Primer plus》百度百科
2.电子版本自行百度

其次,写代码的时候,尽量使用STL的代码,不要轻易尝试自己去实现常用的数据结构,一来是容易出错,二来你写的肯定没有STL的效率高。站在巨人肩上才是最应该做的。如果你对C++足够了解的话,推荐使用boost或者C11里面的智能指针,shared_ptr和weak_ptr能避免大量的内存问题(这个后面说起C11,再详细说明)。


好了,写了代码以后,接下来就是调试了。内存出错了,捉鸡啊,怎么办?找大牛还是死扛呢?这时候你就需要一些特别的工具了。


首先,自然是vld了。vld全称Visual Leak Detector,目前最新版本2.3.0,官网地址http://vld.codeplex.com/

vld的好处就是简单,几乎不需要做任何修改,装完了,只要添加一个头文件,就可以用了。

  • 仅需要把头文件编译进工程即可,最好加在main.cpp里(就是有winmain函数的那个文件)

  • 另外,多个dll,需要每个都添加。比如libCocos2d,libCocosDenshion需要分别添加


在程序退出之后,就能看到内存泄露的信息了。

0_1315267960bHuJ.gif

双击堆栈信息,可以很直接跳转函数,方便无比。

好了,说了一堆好处,接下来就是有待改进的地方了:

  • 内存检测需要在程序退出以后,检查起来比较麻烦

  • 虚拟机下,使用不太正常。


高级模式其实和vld的原理一样,可以再代码接管内存分配器(重载new和delete),然后自己比对分配和释放的过程。也可以在需要分配的首尾加上自定义的内存块,这样可以很方便的监控内存越界的问题。


详细的就不展开了,有兴趣的同学可以自己找谷哥度娘。


补充下有关vld的内容:

  • 默认安装以后,会自动添加相关的目录,如果不是安装的话,请手工添到vc的目录中

  • 运行的时候如果有问题,请把vld根目录下bin目录中的几个文件复制到应用程序目录



预告下:

下期的调试主要说下常用的一些调试代码,以及针对2dx调试的一些小改造


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章