.net中的Debug与Trace的调试心得

作者:小菜 更新时间:2025-02-26 点击数:
简介:最近在读《.NET开发人员调试策略》,书倒是不错,只是翻译的比较差。

不过里面介绍的一些调试的心得还不错,有些收获。

下面我就总结下本书中关于Debug和Trac

【菜科解读】

最近在读《.NET开发人员调试策略》,书倒是不错,只是翻译的比较差。

不过里面介绍的一些调试的心得还不错,有些收获。

下面我就总结下本书中关于Debug和Trace的一些应用,算作一种读书笔记。

粗略概括下关于修改BUG的几种方法:

通过调试器调试

顾名思义就是跟踪源代码进行调试,微软还提供了远程调试的功能。

通过源代码的方式调试,我们一般会采用以下的几种方法:

使用Exception

使用MessageBox。

使用#if Debug .. #endif

使用断言调试:其中有Debug.Assert和Trace.Assert两种,Debug只在Debug模式下有效,Trace则都有效。

断言模式还有个优点,可以直接点击按钮重试,选择调试器进行调试。

当然还有通过堆栈跟踪或者其他的一些特殊手段等等。

.net所提供的断言调试相当强大,建议大家采用该方法。

具体应用请自行寻找资料。

msdn:

Debug.Assert 方法

Trace.Assert 方法

通过日志调试

想必大家肯定遇到过,有些BUG在客户那边会出现,但是本机就是模拟不出来。

而客户要嘛远隔万里,要嘛就是不允许安装远程调试。

在这种情况下,就可以通过日志调试,也就是将一些重要的信息写到文本中,当出现问题或者BUG可以通过查看日志文件来查找原因。

记录日志文件,就是写文件的操作,可以有很多种方法。

此处介绍下通过.net提供的侦听器与开关记录日志。

1.直接创建

1 static void Main(string[] args)2 {3 bool someBool = true;4 Trace.Listeners.Add(new TextWriterTraceListener(@"C:\MyListener.log")); 5 Trace.AutoFlush = true;//每次写入日志后是否都将其保存到磁盘中6 7 Trace.WriteLine(DateTime.Now.ToString() + "--Enter function LogTest");8 Trace.Indent(); //缩进+19 Trace.WriteLine("This is indented once");10 Trace.Indent();11 Trace.WriteLineIf(someBool, "Only written if someBool is true");12 Trace.Unindent(); //缩进-113 Trace.Unindent();14 Trace.WriteLine("Leave function LogTest");15 }

日志内容:

2012-05-30 14:11:41--Enter function LogTest This is indented once Only written if someBool is trueLeave function LogTest

2.通过配置文件创建

App.config

1 static void Main(string[] args)2 {3 TraceSwitch ts = new TraceSwitch("MySwitch", "descrption");//开关4 Trace.WriteLine(DateTime.Now.ToString() + "--Enter function LogTest");5 Trace.Indent(); //缩进+16 Trace.WriteLine("This is indented once");7 Trace.Indent();8 Trace.WriteLineIf(ts.TraceInfo, "MySwitch TraceInfo is true!");9 Trace.Unindent(); //缩进-110 Trace.Unindent();11 Trace.WriteLine("Leave function LogTest");12 }

日志内容:

2012-05-30 14:19:43--Enter function LogTest This is indented once MySwitch TraceInfo is true!Leave function LogTest

3.windows事件日志

通过Trace或者Debug中的EventLogTraceListener即可写入事件日志。

.net,中的,Debug,与,Trace,的,调试,心得,

五代中的后唐和唐朝有什么联系吗?

非我族类,其心必异,既然不能继嗣,当然就不能继统——传承通常是血缘意义上的传承,因此“”与“”毫无关系。

而如果抛开血缘,站在人的立场,两者确实存在一种承续或者说中兴关系,即李存勖的后唐乃是盛唐的延续,如同。

后世的李昇建,也以此自矜。

再远者如,匈奴建汉国、同样宣称是继承自强汉。

为什么这么说?主要是来自李唐官方的背书。

有两点: 其一、昭宗以国运相托。

《·唐本纪第五》: 昭宗异其状貌,赐以鸂鶒卮、翡翠盘,而抚其背曰:“儿有其表,后当富贵,无忘予家。

” 昭宗者,也,为所弑,哀帝即位,即唐末帝,在位三年被朱温所废,再被鸩杀,唐朝自此灭亡。

昭宗在赏赐了李存勖后,说:“小伙子以后一定会大富大贵,到时不要忘了我们家!” 此言既入正史,当然会被解读成前代君主以国运相托。

当然这句话的真实性存疑,因此其权威性也存疑。

此处姑且不论。

为什么这句话不能由末帝来说呢? 自然是因为:一、李柷是亡国之君;二、李柷17岁而见杀,太年轻,岂有以唇上无髭须而能托付的家长? 其二、懿宗以族运相系。

《新五代史·唐本纪第四》: 懿宗咸通十年,神策大将军康承训统十八将讨庞勋于徐州,以朱邪赤心为太原行营招讨沙、陀三部落军使。

以从破勋功,拜单于大都护、振武军节度使,赐姓名曰李国昌,以之属籍。

沙陀之先,本小种,后来自号为沙陀,以朱邪为姓。

朱邪尽忠传朱邪执宜,再传朱邪赤心,然后赤心因战功被赐姓名“李国昌”,更重要的是还让其“属籍”。

属籍有三个解释,第二种为:列入宗室图籍。

如《明堂宗室加恩制》:“尔列名属籍,序位内朝。

” 如果是这个意思那就相当伟光正了,朱邪氏因战功而列名宗室,其族长乃是! 这是什么?这是从一跃而成为龙子龙孙! 李氏既已覆没于朱温之手,族内子孙自有兴复之义务,正如既兴、则击之,同理,既盛,李氏自当! 因此说沙陀人身系李氏族运。

随机文章为何唐朝以前没以江南为经济命脉?希特勒从不让人提的6个隐私,若提起1个,立刻军法处置兴义万峰林天坑深达600米,人类在坑底定居了600多年黄延秋事件是真是假,黄延秋事件真相大白/科学证实外星人存在量子意识为什么被禁止,意识是量子力学的基础/意识可改变物质世界

电视剧中的李绂有没有被黑 历史上的他是什么样的

首先电视剧《王朝》并没有黑李绂,李绂被雍正整是因为李绂作为清流代表,他集结河南文官集体参办镜,阻止在河南推行“士绅一体当官,一体纳粮”。

田文镜参李绂结党营私,这是历史上著名的“田文镜李绂互参案”,不论电视剧还是小说《雍正王朝》都是在此基础上的一个简单加工。

当时情况河南科举考生集体罢考,雍正气头上。

雍正推行新政势在必行,这侵害读书人利益,雍正都说了“宁可得罪天下读书人,都要推行新政,表面上李绂一波人是冲着田文镜,实际上是冲着朕来的。

”李绂一波人为当时天下读书人,现有孔孟,后有君臣天下,这种思想正是雍正要整治的,不能让读书人白白享受朝堂供奉。

李绂在《雍正王朝》中科考舞弊案和孙嘉诚被年羹尧杀害,参死年羹尧都给人留下了深刻印象。

李绂作为直隶总督威望甚高,更是陆王理学的继任者,说他为当时天下文宗也不为过。

但是就这样一位天下文人的代表,为了维护自身利益带头质疑当朝,阻碍新政推行,不整他,难道放任不管? 李绂也算真汉子,史书记载,李绂成被雍正押赴刑场,刀驾到脖子上问“现在知道田文镜好了吗”李绂不改其志向。

后来雍正派人查没李绂宅第时,发现李绂为官清廉,家中妻子配饰居然都是铜制品,这才放了李绂。

李绂在朝任户部侍郎,后来告老回乡,做学问,78岁病逝。

随机文章北极圈里的富兰克林木乃伊,因铅中毒而死在探索航道的路上无人机和遥控飞机的区别分析,无人机能自动控制飞行/性能超屌本初子午线所在的经度是多少,经度为0/并非东西半球分界线印度十大好看的高分电影,三傻大闹宝莱坞竟不是第一/厕所英雄登顶压电效应有哪些种类,详解压电效应的原理/发现者是居里夫人丈夫

加入收藏
               

.net中的Debug与Trace的调试心得

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录