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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

辅助类——记录错误信息

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

記錄錯誤信息

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

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

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

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

它使用一個Log.txt文件來存儲所有消息,并使用一個靜態(tài)的StreamWriter對象,以便可以方便地在靜態(tài)方法中訪問。

#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

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

最后,這是該類的最重要的一個方法、也是您將一直調(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

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

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

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

總結(jié)

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

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