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),执行输出的内容是不一样的。
6 利用宏定义 [#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."); }
}
}
}
运行结果: