日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

辅助类——记录错误信息

發(fā)布時(shí)間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 辅助类——记录错误信息 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

記錄錯(cuò)誤信息

Debug游戲代碼可能是非常復(fù)雜的,特別是如果您沒(méi)有得到任何異常,但某些渲染循環(huán)卻出錯(cuò)。只設(shè)置幾個(gè)斷點(diǎn)并不夠,尤其是如果游戲在運(yùn)行一段時(shí)間之后遇到錯(cuò)誤,Debug并不是正確的選擇。您想知道每一幀都運(yùn)行了什么,但又不想逐步貫穿500幀去發(fā)現(xiàn)它。對(duì)于這類(lèi)問(wèn)題,您可以?xún)H僅拋出一些文本到控制臺(tái),不過(guò)這只能在Visual Studio中使用,而且當(dāng)你下次啟動(dòng)項(xiàng)目時(shí)將會(huì)丟失所有的控制臺(tái)內(nèi)容。

在我做過(guò)的所有比較大型的項(xiàng)目中,一個(gè)最重要的類(lèi)就是Log類(lèi),它只是給一個(gè)簡(jiǎn)單的文本文件寫(xiě)入消息、警告、錯(cuò)誤或者Debug文本。這個(gè)類(lèi)本身很簡(jiǎn)短,也很簡(jiǎn)單,但如果你以正確的方式使用它,將會(huì)給您的debug調(diào)試和測(cè)試會(huì)話(huà)更令人愉快。另外,還有更加高級(jí)的日志記錄類(lèi)和框架(logging classes and frameworks)可利用,諸如Log4Net,你可以在http://logging.apache.org/log4net/找到。日志不僅僅只是給文本文件寫(xiě)入幾行。來(lái)自于應(yīng)用程序的日志數(shù)據(jù)常常用來(lái)遠(yuǎn)程獲取用戶(hù)錯(cuò)誤,借助一個(gè)WebService,你可以激活Windows錯(cuò)誤事件,還可以做很多其他事情。這些不是本書(shū)能涵蓋的,因?yàn)檫@是一個(gè)非常復(fù)雜的話(huà)題。對(duì)于本書(shū)中的簡(jiǎn)單游戲,使用Log類(lèi)應(yīng)該足夠了。

先看一看Log類(lèi)(在Breakout游戲中能找到一個(gè)更復(fù)雜的版本):

public class Log {#region Variablesprivate static StreamWriter writer = null;private const string LogFilename = "Log.txt";#endregion

它使用一個(gè)Log.txt文件來(lái)存儲(chǔ)所有消息,并使用一個(gè)靜態(tài)的StreamWriter對(duì)象,以便可以方便地在靜態(tài)方法中訪(fǎng)問(wèn)。

#region Static constructor to create log file static Log() {// Open fileFileStream file = new FileStream(LogFilename, FileMode.OpenOrCreate,FileAccess.Write, FileShare.ReadWrite);writer = new StreamWriter(file);// Go to end of filewriter.BaseStream.Seek(0, SeekOrigin.End);// Enable auto flush (always be up to date when reading!)writer.AutoFlush = true;// Add some info about this sessionwriter.WriteLine("/// Session started at: "+StringHelper.WriteIsoDateAndTime(DateTime.Now)); } // Log() #endregion

在游戲運(yùn)行的時(shí)候,枚舉值FileShare.ReadWrite確保你總是可以從外部讀寫(xiě)文件。除此之外,要把writer設(shè)置到文件的末尾,AutoFlush屬性能夠確保寫(xiě)入新數(shù)據(jù)會(huì)被立即存儲(chǔ)到日志文件中,最后再添加一點(diǎn)兒文本指示這次會(huì)話(huà)已經(jīng)開(kāi)始。對(duì)于時(shí)間戳你將使用StringHelper類(lèi)的一個(gè)輔助方法,你立刻就會(huì)學(xué)到這個(gè)類(lèi)。

最后,這是該類(lèi)的最重要的一個(gè)方法、也是您將一直調(diào)用的唯一方法:

#region Write log entry static public void Write(string message) {DateTime ct = DateTime.Now;string s = "[" + ct.Hour.ToString("00") + ":" +ct.Minute.ToString("00") + ":" +ct.Second.ToString("00") + "] " +message;writer.WriteLine(s);#if DEBUG// In debug mode write that message to the console as well!System.Console.WriteLine(s); #endif } // Write(message) #endregion

首先,在消息的前面加上一個(gè)簡(jiǎn)單的時(shí)間戳。然后消息被寫(xiě)入Log.txt文件中,最后如果項(xiàng)目在debug模式,也把消息輸出到控制臺(tái)。現(xiàn)在,只是通過(guò)添加下列代碼行,當(dāng)你每一次完成來(lái)自第二章的Breakout游戲的一個(gè)關(guān)卡,你就給Log.txt文件添加一個(gè)新行:

Log.Write("Level " + level + " completed.");

轉(zhuǎn)載于:https://www.cnblogs.com/AlexCheng/archive/2010/07/28/2120269.html

總結(jié)

以上是生活随笔為你收集整理的辅助类——记录错误信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。