使用“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解決方案下進行調試。雖然不那么方便,但也不算太麻煩。

 

使用Cocos引擎創建的項目,想要調試Cocos2d-x源碼,就呵呵了,首先並Cocos自身的Cocos2d-x源碼沒有工程文件,也沒有源碼,有的只是一堆的頭文件以及編譯好的lib,dll。源碼都沒有,你怎么查看呢?關鍵是也無法調試到Cocos2d-x的源碼,這點就非常不方便了。

折騰了一晚上,找到了比較簡單的方法,希望調試Cocos引擎生成的代碼,需要以下幾個步驟:

 

1.下載與Cocos引擎對應版本的Cocos2d-x源碼

2.編譯生成下載完的Cocos2d-x源碼

3.將使用Cocos引擎創建的項目添加到Cocos2d-x的解決方案下

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項目。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM