Gamebryo 引擎的Assert,log和debug

來源:互聯網
上載者:User

我們在遊戲中需要一個健壯的引擎,那怎樣才能保證引擎的健壯性呢?主要有兩個方面:一個是儘可能的減少bug,二是在bug發生後能儘早的發現並解決。GB引擎和大多數引擎一樣,有自己的一套保護機制。包括斷言,日誌模組和debug模組。

 

一 斷言

斷言的使用,能夠讓開發人員在最短的時間內看到問題所在,一般情況下斷言只在debug模式下有用。在release模式下,我們可以把錯誤資訊記錄在log中。這時候我們就需要重新定義assert,最簡單的是定義一個宏。在GB中,assert相關的宏都定義在asserts.h中。EE_DISABLE_ASSERTS宏用來控制是否啟用斷言,EE_ENABLE_RELEASE_ASSERT用來控制是否在release模式下啟用斷言,一般情況下是不主張在release模式下啟用斷言的。在GB中提供三種斷言方式:EE_ASSERT_xxx, EE_VERIFY_xxx and EE_FAIL_xxx. 第一種在debug模式下用,第二種在release模式下使用,最後一種是在檢測失敗條件下用。

 

二 日誌

日誌系統在一個遊戲引擎中是必不可少的一部分,我們構建一個日誌模組最重要的目的是瞭解整個引擎的運行情況。首先我們必須清楚哪些東西應該記錄在日誌中,總體來說日誌記錄的資訊可以按高,中,低三個層級來分。進階別的資訊包括引擎的錯誤資訊,例如我們通過try catch獲得的崩潰資訊,通常都是一些致命性的錯誤,例如數組越界,記憶體訪問失敗,記憶體流失等。中級的指一些非致命性的錯誤,例如資料載入失敗,網路連接失敗,檔案開啟失敗等。低層級的就包括一些運行提示資訊。當然我們也可以根據需要把等級分的更細一些,GB中就把log的層級分成了8個層級。根據不同的層級我們可以進行不同的處理,一般情況下是把不同種類的log資訊放在不同的檔案中,導致引擎崩潰的log資訊最好是能夠通過網路發送到某個資料庫中,這樣對於我們尋找遊戲的錯誤是很有利的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.