適合OGRE程式的調試技巧:logManager

來源:互聯網
上載者:User

 OGRE的程式由於大量使用STL,加上我們也喜歡STL.

所以在debug模式下,如果程式稍微大一點,要想調試幾乎不可能,那速度不是人可以忍受的

所以好用的斷點啊,快速監視啊,assert啊,基本不能用.

 

為了速度,只有在release模式下用log列印日誌的方式自己輸出重要訊息.

而要大量使用logManager,就必須要用流的方式來列印資料,

可以把字串和變數串連起來,省去轉換變數為字串的麻煩

 

至於怎麼用流的方式,分2種情況

 

如果是早期的1.4X版本,可以用StringUtil::StrStreamType:

// Log informational<br />StringUtil::StrStreamType str;<br />str << "Material " << mName << " Technique " << techNo;<br />if (!(*i)->getName().empty())<br />str << "(" << (*i)->getName() << ")";<br />str << " is not supported. " << compileMessages;<br />LogManager::getSingleton().logMessage(str.str(), LML_TRIVIAL);

 

如果是1.6X的版本,有更好方法,可以用stream:

LogManager::getSingleton().stream()<br /><< "Generating " << lodDistances.size()<br /><< " lower LODs for mesh " << mName;

 

log日誌有層級,log資訊也有層級,如果2個層級相加 >= 4

那麼這個資訊就會被列印到log檔案.預設情況下log記錄層級和log資訊層級都是2

所以會列印出來,當然也可以手動設定.

// LogMessageLevel + LoggingLevel > OGRE_LOG_THRESHOLD = message logged<br /> #define OGRE_LOG_THRESHOLD 4</p><p> /** The level of detail to which the log will go into.<br /> */<br /> enum LoggingLevel<br /> {<br /> LL_LOW = 1,<br /> LL_NORMAL = 2,<br /> LL_BOREME = 3<br /> };</p><p> /** The importance of a logged message.<br /> */<br /> enum LogMessageLevel<br /> {<br /> LML_TRIVIAL = 1,<br /> LML_NORMAL = 2,<br /> LML_CRITICAL = 3<br /> };

 

順位的好處就是可以根據需要觀看log資訊

比如調試的時候設定log層級最低,可以看到所有資訊,

發布的時候設定最高,少列印很多不需要的資訊,提高效率:

 

 void App::createRoot()<br />{<br />mRoot = new Root();<br />//LogManager::getSingleton().getDefaultLog()->setLogDetail(LL_LOW); // log層級設定為最低<br />LogManager::getSingleton().getDefaultLog()->setLogDetail(LL_BOREME); // log層級設定為最高<br />}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.