使用「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項目。

相關文章
相關標籤/搜索