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

不过里面介绍的一些调试的心得还不错,有些收获。
下面我就总结下本书中关于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/并非东西半球分界线印度十大好看的高分电影,三傻大闹宝莱坞竟不是第一/厕所英雄登顶压电效应有哪些种类,详解压电效应的原理/发现者是居里夫人丈夫