C# Debug Trace调试类用法

简介:     Debug和Trace都是调试类。     Debug类的方法只有DEBUG版中生效,而Trace的方法可以在DEBUG/RELEASE版本中生效。 一、Debug类 Debug类的控制台输出及断言Assert用法。

    Debug和Trace都是调试类。

    Debug类的方法只有DEBUG版中生效,而Trace的方法可以在DEBUG/RELEASE版本中生效。

一、Debug类

Debug类的控制台输出及断言Assert用法。

  1. public static void TestDebug()
  2. {
  3.     Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
  4.     Debug.AutoFlush = true;
  5.     Debug.Indent();
  6.     Debug.WriteLine("Debug WriteLine()");
  7.     Console.WriteLine("Console.WriteLine()");
  8.     Debug.WriteLine("Debug WriteLine2()");
  9.     Debug.Unindent();
  10.       
  11.     /* Debug.Assert测试 */
  12.     int data = 0;
  13.     data--;
  14.     Debug.Assert(data > 0, "Debug.Assert: data小于0是不允许的!");
  15. }



image



二、Trace类

Trace类的控制台、LOG文件输出及断言Assert用法

  1. public static void TestTrace()
  2. {
  3.     /* 设置跟踪信息同时在控制台和日志文件中输出 */
  4.     Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
  5.     Trace.Listeners.Add(new TextWriterTraceListener("testtrace.log"));
  6.     Trace.AutoFlush = true;
  7.     /* Trace Indent and Unindent 通过缩进来区分WriteLine的输出 */
  8.     Trace.Indent();
  9.     Trace.WriteLine("Entering Main");
  10.     Console.WriteLine("Hello World.");
  11.     Trace.WriteLine("Exiting Main\n");
  12.     Trace.Unindent();
  13.     /* Trace.Assert测试 */
  14.     int data = 0;
  15.     data--;
  16.     Trace.Assert(data > 0, "Trace.Assert: data小于0是不允许的!");
  17. }


image



三、Trace类的五级信息输出用法

    由于Trace类可以在发布版本中起作用,所以,在做Trace输出信息的时候,可能有些信息是调试的时候需要,发布的时候又不需要了,那怎么才能保证信息不在发布的时候输出呢?.NET为我们提供了五个控制Trace的跟踪级别,使用它们不必重新编译,他们跟别是:

image

  1. public static void TestTraceWithSwitch()
  2. {
  3.     Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
  4.     TraceSwitch ts = new TraceSwitch("mySwitch", "in App.config file");
  5.     Trace.WriteLineIf(ts.TraceError, "Error!!!");
  6.     Trace.WriteLineIf(ts.TraceWarning, "Warning!!!");
  7.     Trace.WriteLineIf(ts.TraceInfo, "Info!!!");
  8.     Trace.WriteLineIf(ts.TraceVerbose, "Verbose!!!");
  9.     
  10.     Console.ReadKey();
  11. }

App.config文件

image


参考网址:

http://blog.csdn.net/yunhaic/article/details/4863322

https://msdn.microsoft.com/zh-cn/library/system.diagnostics.debug(v=vs.110).aspx

https://msdn.microsoft.com/zh-cn/library/zd83saa2(v=vs.100).aspx

相关文章
|
2月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
15天前
|
监控 测试技术 C#
C# 一分钟浅谈:GraphQL 错误处理与调试
本文从C#开发者的角度,探讨了GraphQL中常见的错误处理与调试方法,包括查询解析、数据解析、权限验证和性能问题,并提供了代码案例。通过严格模式定义、详细错误日志、单元测试和性能监控等手段,帮助开发者提升应用的可靠性和用户体验。
91 67
|
3月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
85 2
|
19天前
|
C#
c#中switch case语句的用法
C#中的 `switch case`语句提供了一种简洁而高效的方式来处理多个条件分支。通过了解其基本语法、注意事项和高级用法,可以在实际开发中灵活运用 `switch case`,提高代码的可读性和维护性。希望本文能帮助你更好地理解和使用C#中的 `switch case`语句。
47 0
|
2月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
14 0
|
3月前
|
C# 数据安全/隐私保护
C# 一分钟浅谈:类与对象的概念理解
【9月更文挑战第2天】本文从零开始详细介绍了C#中的类与对象概念。类作为一种自定义数据类型,定义了对象的属性和方法;对象则是类的实例,拥有独立的状态。通过具体代码示例,如定义 `Person` 类及其实例化过程,帮助读者更好地理解和应用这两个核心概念。此外,还总结了常见的问题及解决方法,为编写高质量的面向对象程序奠定基础。
27 2
|
4月前
|
Java C# 索引
C# 面向对象编程(一)——类
C# 面向对象编程(一)——类
35 0
|
4月前
|
开发框架 .NET 编译器
C# 中的记录(record)类型和类(class)类型对比总结
C# 中的记录(record)类型和类(class)类型对比总结
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
34 3
|
28天前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
43 4