首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cs-Script & System.Diagnostics.Debug :覆盖调试输出跟踪

Cs-Script & System.Diagnostics.Debug :覆盖调试输出跟踪
EN

Stack Overflow用户
提问于 2011-07-09 06:21:19
回答 3查看 1.1K关注 0票数 2

好吧,我觉得标题可能会让人很困惑……:)

我的应用程序使用CS-Script作为脚本接口。在我的应用程序将要运行的脚本中,我希望有某种“调试打印”-这意味着在脚本中的某个地方,脚本编写者可以执行“Debug.Print(”BLAAAAH!“);”),这会出现在我非常时髦的输出对话框中的某个地方。

当然,我可以创建自己的调试输出内容,但由于我使用C#作为脚本语言,而使用C#的人将习惯于使用System.Diagnostics和Debug.Print("..."),如果我可以重新路由System.Diagnostics.Debug.Print("")和System.Diagnostics.Debug.WriteLine("..."),那就太好了。将它们的输出跟踪到我的酷输出窗口。

所以。

有没有人知道有没有可能将C#的System.Diagnostic.Debug打印/写入输出重新路由到我可以控制的地方?

EN

回答 3

Stack Overflow用户

发布于 2011-07-09 06:23:55

为此,您可以创建自定义TraceListener

票数 0
EN

Stack Overflow用户

发布于 2011-09-19 17:00:14

应设置编译时调试符号或使用/dbg选项运行脚本

代码语言:javascript
复制
cscs /dbg <yourScript>

您还需要创建一个自定义的TraceListener,或者简单地使用一个跟踪查看器,比如sysinternals DebugView

票数 0
EN

Stack Overflow用户

发布于 2011-09-19 17:42:55

我也使用TraceListener来实现这一点,但下面是我的代码片段:

类:

代码语言:javascript
复制
using System.Diagnostics;

public class DebugOutputListener : TraceListener
{
    public event EventHandler<DebugMessageArgs> DebugMessage;

    public override void Write(string message)
    {
        EventHandler<DebugMessageArgs> h = DebugMessage;
        if (h != null)
        {
            DebugArgs args = new DebugArgs
            {
                Message = message
            };
            h(this, args);
        }
    }

    public override void WriteLine(string message)
    {
        Write(message + "\r\n");
    }
}

public class DebugMessageArgs : EventArgs
{
    public string Message
    {
        get;
        set;
    }
}

若要接收调试消息,请实例化DebugOutputListener的实例,订阅DebugMessage事件处理程序并向Debug.Listeners集合注册侦听器。

例如:

代码语言:javascript
复制
private void InitialiseDebugListener()
{
    DebugListener dl = new DebugListener();
    dl.DebugMessage += new EventHandler<DebugArgs>(Console_OnDebugMessage);
    Debug.Listeners.Add(dl);
}


private void Console_OnDebugMessage(object sender, DebugMessageArgs e)
{
    string debugMessage = e.Message;

    // Do what you want with debugMessage.
    // Be aware this may not come in on the application/form thread.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6631178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档