65.9K
CodeProject 正在变化。 阅读更多。
Home

调试控制台窗口

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (15投票s)

2002 年 9 月 1 日

2分钟阅读

viewsIcon

179433

downloadIcon

3061

一个有用的调试控制台窗口类,用于在运行时调试、报告事件和将日志保存到磁盘。

引言

我通常会将各种调试消息发送到.txt文件或标准控制台,但不知何故我厌倦了这种DOS的感觉……诸如单击即可将整个输出保存到文件或轻松清除列表之类的交互式功能也无法使用。因此,我开始编写这个对话框控制台。 DebugConsole类是一个单例,它将Form类作为成员,这似乎是在C#中使该类充当全局变量的最佳方法。

第一个版本没有对.NET的侦听代码的支持,Richard D. 建议从此类派生自System.Diagnostics.TraceListener,这确实是一个很好的想法,因为它也简化了调用,感谢Richard。您只需要包含System.Diagnostics命名空间并调用DebugConsole.Instance.Init()方法。第一个参数告诉您是否要设置调试侦听器(true)或跟踪侦听器(false);第二个参数涉及WriteLine()的回车符,如果将其设置为true,则发送到WriteLine的消息将使用新行,而不是添加到当前缓冲区。当您使用Write()函数时,会发生这种情况。WriteLine()Write()是唯一带有override关键字的函数。

using System.Diagnostics;

[STAThread]
static void Main() 
{
    #if (DEBUG)
    // debug mode

        DebugConsole.Instance.Init(true,true);
    #else
    // release mode
       DebugConsole.Instance.Init(false,true);
    #endif
    
    Application.Run(new Form1());
}

void MyFunction()
{
   float f=3.1415f;
   Debug.WriteLine("Output will only appear in Debug Mode");
   Trace.WriteLine("Output will appear in both Debug 
                   and Release mode" +   f.ToString());

   Debug.Write("1");
   Debug.Write("2");
}

这将立即将字符串写入控制台并将其发送到侦听器(您可以使用外部工具(如DebugView)可视化的字符串)。控制台现在可以调整大小,并且我添加了一个“始终置顶”选项。

单例的存在也意味着您无需在任何地方声明对象,这些步骤由类在调用Init()时自动完成。窗口放置在屏幕的左上角。您可以在设计器中更改ListView的颜色。

时间戳使用.NET的DateTime类,您可以使用该类添加“日期”按钮、毫秒…… 随意改进它:)

© . All rights reserved.