使用“Cocos引擎”建立的cpp工程如何在VS中调试Cocos2d-x源码

前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老少的整合包,咱们可使用这个Cocos引擎来建立咱们的项目。多线程

在Cocos2d-x被整合到Cocos引擎以前,咱们能够不那么方便地在咱们建立的工程里调试Cocos2d-x的代码,当咱们使用了整合后的Cocos引擎,调试Cocos2d-x的代码就变得更加,很是不方便了!函数

使用Cocos2d-x建立的项目,在最早的版本必须是在Cocos2d-x引擎的目录下,放到其余的位置须要进行各类麻烦的设置,诸如头文件,库文件,dll等的路径设置。并且全部的项目都挤在同一个解决方案下实在是过于臃肿。因而出现了建立一个单独的解决方案这种作法,但这种作法与Cocos2d-x的源码分离了,不方便代码阅读和调试,程序崩溃时没法定位到Cocos2d-x的堆栈。编码

这时候要调试到Cocos2d-x的源码,须要将你的项目添加到对应的Cocos2d-x解决方案下,这时候便可以切换源码,也能够调试,只是一个简单的添加项目操做,随时能够移除,对本身的项目没有影响。这种状况下大可在本身单独的项目中进行编码开发,到须要调试Cocos2d-x的时候再回到Cocos2d-x解决方案下进行调试。虽然不那么方便,但也不算太麻烦。spa

 

使用Cocos引擎建立的项目,想要调试Cocos2d-x源码,就呵呵了,首先并Cocos自身的Cocos2d-x源码没有工程文件,也没有源码,有的只是一堆的头文件以及编译好的lib,dll。源码都没有,你怎么查看呢?关键是也没法调试到Cocos2d-x的源码,这点就很是不方便了。命令行

折腾了一夜,找到了比较简单的方法,但愿调试Cocos引擎生成的代码,须要如下几个步骤:线程

 

1.下载与Cocos引擎对应版本的Cocos2d-x源码调试

2.编译生成下载完的Cocos2d-x源码code

3.将使用Cocos引擎建立的项目添加到Cocos2d-x的解决方案下blog

4.为本身的项目添加依赖项,依赖libcocos2d项目事件

5.安心调试

 

第四个步骤在以前Cocos2d-x版本中是不须要的,但在这里若是不添加依赖,将没法加载libcocos2d的调试信息文件,也就没法调试了。另外必须先编译生成Cocos2d-x源码,不然直接编译本身工程可能会报错。另外版本必须对应,若是不对应的话可能会报错,有些函数不对应运行会直接崩溃。

 

添加依赖项有两种方法,第一种是在项目的生成依赖项中进行设置:

选择本身的项目,而后勾选但愿调试的源码工程

另一个方法是在解决方案的属性中设置

完成设置以后libcocos2d.pdb文件加载成功,成功地在cocos2dx中断下断点。

PS.可能还有其余的方法能够来完成这样一个需求,例如指定源码目录之类的,但设置依赖项应该是最方便的了。

 

2015-2-4 重要补充:

Cocos引擎生成的Project想要调试还须要如下步骤:

1.将Main.cpp中,连接cocos2dx.lib的代码删除,这里会强制连接到Cocos引擎生成的无调试信息的lib,咱们要连接到的是带调试信息的lib文件。

1 #if _MSC_VER > 1700
2 #pragma comment(lib,"libcocos2d_2013.lib")
3 #pragma comment(lib,"libbox2d_2013.lib")
4 #pragma comment(lib,"libSpine_2013.lib")
5 #else
6 #pragma comment(lib,"libcocos2d_2012.lib")
7 #pragma comment(lib,"libbox2d_2012.lib")
8 #pragma comment(lib,"libSpine_2012.lib")
9 #endif

2.在附加依赖项中添加连接库glew32.lib,由于libcocos2d_2013.lib将glew32.lib一块儿连接进来了,因此连接了libcocos2d_2013.lib就不须要再连接glew32.lib了,但原始的libcocos2d.lib并无连接它。

3.将项目属性——C/C++——代码生成——运行库,从多线程DLL(/MD)修改成多线程调试DLL(MDD)。Cocos引擎生成的DEBUG项目实际上使用的是Release的设置。

4.删除项目属性中,生成事件——预连接生成事件,命令行中的内容,避免额外的麻烦。

5.最后别忘了引用Cocos2d-x项目。

相关文章
相关标签/搜索