gsk's place

my love

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

转载自: http://blog.csdn.net/aaaaatiger/article/details/5583301

 

1.debug只在[debug模式下才执行](运行按钮后面的下拉框可选)

 

2.断言 [Assert]

System.Diagnostics.Debug.Assert(false,"信息"); 

将出现一个对话框,类似下图:

 

 

3.debug可以自定义监听器
(下例将信息存入磁盘文件)

 

System.Diagnostics.TextWriterTraceListener TraceListener = new System.Diagnostics.TextWriterTraceListener(@"d:/debug.txt");
System.Diagnostics.Debug.Listeners.Add(TraceListener);
System.Diagnostics.Debug.WriteLine(System.DateTime.Now.ToString());
Debug.WriteLine("Hello, world!");
TraceListener.Flush();

 

4. debug和console.write()有什么区别?
debug在运行状态时向ide的限时窗口输出(用于windows 窗体程序)
console.write用于控制台程序,使用程序在运行时可以向控制台(就是dos界面的那个)输出信息
二者同样是输入,但Debug是输出到output窗口,而Console是输出到控件台窗口,
而且Debug必须要在Debug情况下才有效,你按Ctrl+F5后会看到Console的输出,
按F5后也能看到Console的输出,还可以看到output中Debug的输出

 

5  条件编译 [#if DEBUG ]
首先,大小写不能写错,其次,解决方案配置设为:Debug,才会执行该语句,如果在条件里面搭配Debug.Assert等,效果甚佳。而如果要设置为Release模式,就不会执行条件语句中的内容,有时候可以通过设置!DEBUG来达到发布产品执行的代码。

示例代码:

int debugNumber = 0;

#if DEBUG 
Console.WriteLine("调试中的debugNumber: "+debugNumber);
#endif

#if !DEBUG
debugNumber++;
Console.WriteLine("非调试中的debugNumber: "+debugNumber);
#endif

在不同的调试方式下(Debug和Release),执行输出的内容是不一样的。

 

利用宏定义 [#define]  [#undef DEBUG]

 

#define DEBUG// C#的宏定义必须出现在所有代码之前。当前我们只让DEBUG宏有效。
using System.Diagnostics; //必须包含这个包

解决方案处于 Debug 模式

 

#define ZHANG

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            ToolKit.Method1();
            ToolKit.Method2();
            ToolKit.Method3();
            ToolKit.Method4();
        }

        class ToolKit
        {
            [ConditionalAttribute("LI")]// Attribute名称的长记法
            [ConditionalAttribute("DEBUG")]
            public static void Method1()
            { Console.WriteLine("Created By Li, Buged.11"); }

            [ConditionalAttribute("LI")]
            [ConditionalAttribute("NOBUG")]
            public static void Method2() 
            { Console.WriteLine("Created By Li, NoBug."); }

            [Conditional("ZHANG")]// Attribute名称的短记法
            [Conditional("DEBUG")]
            public static void Method3()
            { Console.WriteLine("Created By Zhang, Buged.11"); }

            [Conditional("ZHANG")]
            [Conditional("NOBUG")]
            public static void Method4()
            { Console.WriteLine("Created By Zhang, NoBug."); }
        }
    }
}

运行结果:

 

posted on 2015-11-04 14:38  gsk99  阅读(6688)  评论(0编辑  收藏  举报