最常用于跟踪的方法是用于将输出写入侦听器的以下方法:WriteWriteIfWriteLineWriteLineIfAssert 和 Fail。这些方法可分为两类:WriteWriteLine 和 Fail 都无条件地发出输出,而 WriteIfWriteLineIf 和 Assert 则检验 Boolean 条件并根据条件的值来写入或不写入。WriteIf 和 WriteLineIf 在条件为 true 时发出输出,而 Assert 在条件为 false 时发出输出。

当设计跟踪和调试策略时,应考虑所需的输出形式。填充不相关信息的多个 Write 语句将创建难于阅读的日志。另一方面,如果使用 WriteLine 将相关语句放置在单独的行上,可能会难以区分哪些信息应该在一起。通常,当需要将来自多个信息源的信息组合起来创建单个提示性消息时,应使用多个Write 语句;当需要创建单个完整消息时,应使用 WriteLine 语句。

写入整个行

  • 调用 WriteLine 或 WriteLineIf 方法。

    一个回车符将附加在此方法返回的消息末尾,使 WriteWriteIfWriteLine 或 WriteLineIf 返回的下一则消息将以如下行开始:

    VB
    Dim errorFlag As Boolean = False
    Trace.WriteLine("Error in AppendData procedure.")
    Trace.WriteLineIf(errorFlag, "Error in AppendData procedure.") 

    C#
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteLine ("Error in AppendData procedure.");
    System.Diagnostics.Trace.WriteLineIf(errorFlag, "Error in AppendData procedure.");

    J#
    boolean errorFlag = false;
    System.Diagnostics.Trace.WriteLine("Error in AppendData procedure.");
    System.Diagnostics.Trace.WriteLineIf(errorFlag, "Error in AppendData procedure.");
    

写入部分行

  • 调用 Write 或 WriteIf 方法。

    由 WriteWriteIfWriteLine 或 WriteLineIf 生成的下一条消息将会在由 Write 或 WriteIf 语句生成的消息所在的同一行上开始:

    VB
    Dim errorFlag As Boolean = False
    Trace.WriteIf(errorFlag, "Error in AppendData procedure.")
    Debug.WriteIf(errorFlag, "Transaction abandoned.")
    Trace.Write("Invalid value for data request")

    C#
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteIf(errorFlag, "Error in AppendData procedure.");
    System.Diagnostics.Debug.WriteIf(errorFlag, "Transaction abandoned.");
    Trace.Write("Invalid value for data request");

    J#
    boolean errorFlag = false;
    System.Diagnostics.Trace.WriteIf(errorFlag, "Error in AppendData procedure.");
    System.Diagnostics.Debug.WriteIf(errorFlag, "Transaction abandoned.");System.Diagnostics.Trace.Write("Invalid value for data request");
    

验证特定条件在执行方法之前或之后存在

  • 调用 Assert 方法。

    VB
    Dim I As Integer = 4
    Trace.Assert(I = 5, "I is not equal to 5.")

    C#
    int I = 4;
    System.Diagnostics.Trace.Assert(I == 5, "I is not equal to 5.");

    C#
    int I = 4;
    System.Diagnostics.Trace.Assert(I == 5, "I is not equal to 5.");
    

    说明:

    您可以将 Assert 用于跟踪和调试。此示例将调用堆栈输出到 Listeners 集合中的任何侦听器。有关更多信息,请参见托管代码中的断言和Debug.Assert。

  • 转自:msdn

如何向应用程序代码添加跟踪语句相关推荐

  1. OpenCV向应用程序添加跟踪栏

    OpenCV向应用程序添加跟踪栏 向应用程序添加跟踪栏 目标 代码 解释 向应用程序添加跟踪栏 目标 在本教程中,您将学习如何: 使用cv :: createTrackbar在OpenCV窗口中添加跟 ...

  2. HOOK大法实现不修改程序代码给程序添加功能

    [文章标题]: HOOK大法实现不修改程序代码给程序添加功能 [文章作者]: 0x18c0 [软件名称]: Scylla [使用工具]: OD.Stub_PE.ResHacker [版权声明]: 本文 ...

  3. python程序中每条语句以分号结尾,在Python程序中,每条语句末尾必须添加分号。...

    在Python程序中,每条语句末尾必须添加分号. 更多相关问题 组织沟通就是在组织结构环境下的( )的交流过程,它涉及战略控制以及如何在创造力和约束力之间达到平衡. (2019考前训练1)启运港填写_ ...

  4. Shell脚本,循环语句用于减少程序代码冗余和重复,for语句,while语句,使用let进行变量自增

    Shell脚本,循环语句用于减少程序代码冗余和重复,for语句,while语句 一.for语法: 1. for 变量 in 值列表 do 命令序列 done 例子:输出循环中的所有值 for i in ...

  5. java中compare语句的用法,compare的用法_java中 compareTo()的程序代码及用法

    compare的用法与区别? 一.用法 v. (动词) 1.compare的基本意思是"比较,对照",主要用于比较事物的典型特征及其价值,而不在于比较相同与不同. 2.compar ...

  6. C语言 程序代码编写规范

    前言 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性. 说明 l 本文档主要适用于刚刚开始接 ...

  7. c语言程序前言,C语言 程序代码编写规范前言

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性 ...

  8. c语言程序报告的前言,C语言 程序代码编写规范前言

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性 ...

  9. 用c语言编写程序相似性检测,程序代码相似性检测在论文抄袭判定中的应用

    摘要:现行的论文检测系统,只针对文字部分进行判定,无法判断论文中所包含的代码的独创性.理工科学生的毕业论文,通常包含的大量代码.因现行系统对代码默视为原创,而最终影响了对论文整体抄袭比例的判定,使准确 ...

最新文章

  1. AD rodc扩展报错
  2. android编程中添加gif,Android应用开发之【Android】使用android-gif-drawable包加载GIF动图...
  3. Python用拉格朗日法进行数据横向插值
  4. SQL2008中Merge的用法
  5. 完善vim bccalc_linux插件
  6. poj3249Test for Job(记忆化搜索)
  7. [翻译] 编写高性能 .NET 代码--第二章 GC -- 配置选项
  8. Spring定时任务并行(异步)处理
  9. Trick(九)—— ++i 与 i++ 的本质区别
  10. openlayer中的投影
  11. 2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)
  12. ETERM航班销售控制指令
  13. 在网页中插入视频代码大全
  14. R语言Error in model.frame.default(formula = y ~ ., data = exam.data, drop.unused.levels = TRUE) :
  15. Begging_Rust(译):丢弃,移动和复制(第二十一章)
  16. 曾经的付费视频课持续放出,以及【直播预告】
  17. word操作:如何修改字体(正确、规范、快捷)
  18. git版本回退(git reset、git revert、git stash)
  19. 猫眼电影爬虫和数据分析
  20. Android7.0 Phone应用源码分析(四) phone挂断流程分析

热门文章

  1. 【英语学习】【WOTD】purview 释义/词源/示例
  2. 求矩阵全部特征值和特征向量的QR方法
  3. python里textfield_Django:为什么我的CharField没有得到类vTextField?
  4. jDom 和dom4j 输出的中文乱码的解决方案
  5. 进程间通信方式_第四十九期-Linux内核中的进程概述(4)
  6. salesforce 架构设计_关于Salesforce证书维护重要通知
  7. ACES学院色彩编码在影片中的应用
  8. 虚幻4属性系统(反射)翻译
  9. CE3和UE3在多线程渲染方面的简单对比
  10. C++20 系列(一)- Hello C++20