【cocos2dx進階】調試篇(1)基礎介紹

  好多同窗都要求乾貨分享,嗯,那我就直接跳過大量的基礎介紹啥的,直接從重點講起,若是有不明白的,請自行google吧,儘量的我也會給出相關的連接,畢竟這個系列不是從零開始的,因此,請見諒。程序員


 從哪裏開始,嗯,先從調試器入手吧。cocos2dx是一個跨平臺的遊戲引擎,主要的開發工具支持win32/mac,因而對於調試器咱們選擇的餘地就大了許多,visual studio,xcode,也能夠用eclipse 或者adt下直接用gdb。windows

wKiom1LZWq-irn10AAA8nLWkxZQ878.jpgwKioL1LZWozBO0KuAADLKSEeuso300.jpgwKiom1LZWrDyi_yrAADnfdNggUs048.jpg


就我我的而言,我仍是喜歡visual studio,穩定、高效、快速、友好,甚至於在放棄了window轉投mac以後,爲了能使用vs來調試特地裝了一個windows的虛擬機。xcode


下面的文章都是圍繞着visual studio展開的,固然運行在win32上。數據結構


對於C++程序員來講,內存管理絕對是最重要的一關,各類奇怪的問題都和內存有關。哪怕是多年的老手,一不留意,也會出各類問題。要少出內存問題,一個是寫出高質量的代碼,另外的就是能快速定位到問題的代碼。好,接下來就是乾貨時間了,……eclipse


wKioL1LZXEuxV3J3ABGxl_OODe4927.jpg首先,天然是好好學習下C++,特別是指針相關的內容,知道了爲何才能少犯錯。推薦的是Stephen Prata的《C++ Primer plus》,經典教材,你值得擁有。
提示:
1.《C++ Primer plus》百度百科
2.電子版本自行百度ide

其次,寫代碼的時候,儘可能使用STL的代碼,不要輕易嘗試本身去實現經常使用的數據結構,一來是容易出錯,二來你寫的確定沒有STL的效率高。站在巨人肩上纔是最應該作的。若是你對C++足夠了解的話,推薦使用boost或者C11裏面的智能指針,shared_ptr和weak_ptr能避免大量的內存問題(這個後面提及C11,再詳細說明)。函數


好了,寫了代碼之後,接下來就是調試了。內存出錯了,捉雞啊,怎麼辦?找大牛仍是死扛呢?這時候你就須要一些特別的工具了。工具


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

vld的好處就是簡單,幾乎不須要作任何修改,裝完了,只要添加一個頭文件,就能夠用了。學習

  • 僅須要把頭文件編譯進工程便可,最好加在main.cpp裏(就是有winmain函數的那個文件)

  • 另外,多個dll,須要每一個都添加。好比libCocos2d,libCocosDenshion須要分別添加


在程序退出以後,就能看到內存泄露的信息了。

0_1315267960bHuJ.gif

雙擊堆棧信息,能夠很直接跳轉函數,方便無比。

好了,說了一堆好處,接下來就是有待改進的地方了:

  • 內存檢測須要在程序退出之後,檢查起來比較麻煩

  • 虛擬機下,使用不太正常。


高級模式其實和vld的原理同樣,能夠再代碼接管內存分配器(重載new和delete),而後本身比對分配和釋放的過程。也能夠在須要分配的首尾加上自定義的內存塊,這樣能夠很方便的監控內存越界的問題。


詳細的就不展開了,有興趣的同窗能夠本身找谷哥度娘。


補充下有關vld的內容:

  • 默認安裝之後,會自動添加相關的目錄,若是不是安裝的話,請手工添到vc的目錄中

  • 運行的時候若是有問題,請把vld根目錄下bin目錄中的幾個文件複製到應用程序目錄



預告下:

下期的調試主要說下經常使用的一些調試代碼,以及針對2dx調試的一些小改造

相關文章
相關標籤/搜索