C#中的Debug.WriteLine() - 它做了什么?

时间:2017-12-21 12:12:31

标签: c# visual-studio

我想知道Debug.WriteLine()做了什么。我一直在许多不同的代码中看到它,但我没有得到它应该做的事情。

到目前为止我发现了什么:

  

"将有关调试的信息写入到跟踪侦听器中   听众收集。"

3 个答案:

答案 0 :(得分:2)

它将在Visual Studio底部的输出窗口中显示消息/文本,您可以使用它来记录“刚刚启动的构造函数”等操作,然后更容易找到错误出现的位置。另一件事是你可以在调试输出中添加变量,如:

Debug.WriteLine("Debug message:Shop.Add.Product({0}), Product);

在此处查看:

  

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

答案 1 :(得分:2)

这可用于跟踪或记录调试版本中的消息。只有在程序编译为调试版本时才会执行它(定义了DEBUG符号。

您可以创建自己的TraceListener来捕获消息并根据需要记录它们。为此,您必须继承摘要TraceListener类:

public class MyListener : TraceListener
{
    public override void Write(string message)
    {
        // log to file or db or whatever you need
    }
    public override void WriteLine(string message)
    {
        // log to file or db or whatever you need
    }
}

然后你必须注册你的听众实例:

public static void Main()
{
     MyListener listener = new MyListener();
     Debug.Listeners.Add(listener);

     // this ends up in MyListener.WriteLine, but only in a debug version
     Debug.WriteLine("This is a debug log message");

     Debug.Listeners.Remove(listener);
}

进一步阅读:MSDN

Visual Studio在调试时总是添加自己的TraceListener,并将消息输出到输出窗口的调试窗格。

答案 2 :(得分:1)

是的,它完全按照你在问题中所说的那样工作,这个方法的来源看起来像(简化):

str2:len

因此,只需为每个已注册的trace listener调用public static void WriteLine(string message) { foreach (TraceListener listener in Listeners) { listener.WriteLine(message); if (AutoFlush) { listener.Flush(); } } } 方法,就像TraceListener.WriteLine一样。您可以注册跟踪侦听器through config files or code

Trace.WriteLineTrace.WriteLine之间的唯一区别是它们是根据不同的条件编译的:

Debug.WriteLine