【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調試的一些小改造


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