我想知道Debug.WriteLine()
做了什么。我一直在许多不同的代码中看到它,但我没有得到它应该做的事情。
到目前为止我发现了什么:
"将有关调试的信息写入到跟踪侦听器中 听众收集。"
答案 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.WriteLine
和Trace.WriteLine
之间的唯一区别是它们是根据不同的条件编译的:
Debug.WriteLine