Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 政务司司长脚本及;System.Diagnostics.Debug:重写调试输出跟踪_C#_Debugging - Fatal编程技术网

C# 政务司司长脚本及;System.Diagnostics.Debug:重写调试输出跟踪

C# 政务司司长脚本及;System.Diagnostics.Debug:重写调试输出跟踪,c#,debugging,C#,Debugging,好吧,我觉得标题可能会让人很困惑……:) 我的应用程序使用CS脚本作为脚本接口。 在我的应用程序将要运行的脚本中,我希望有某种“调试打印”——这意味着脚本编写者可以在脚本中的某个地方执行“Debug.print”(“BLAAAAH!!!”);),这将显示在我非常时髦的输出对话框中 当然,我可以创建自己的调试输出内容,但由于我使用C作为脚本语言,使用C的人将使用System.Diagnostics和debug.Print(“…”),因此, 如果我可以重新路由System.Diagnostics.D

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

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

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

所以


有人知道是否可以将C的System.Diagnostic.Debug打印/写入线输出重新路由到我可以控制的位置吗?

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

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

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

cscs /dbg <yourScript>
cscs/dbg

您还需要创建一个自定义的或简单地使用一个跟踪查看器,如sysinternals,您应该设置编译时调试符号或使用/dbg选项运行脚本

cscs /dbg <yourScript>
cscs/dbg

您还需要创建一个自定义的跟踪查看器,或者简单地使用一个跟踪查看器,如sysinternals,我也使用TraceListener,但下面是我的代码片段:

课程:

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:TraceListener
{
公共事件处理程序调试消息;
公共重写无效写入(字符串消息)
{
EventHandler h=调试消息;
如果(h!=null)
{
DebugArgs args=新的DebugArgs
{
消息=消息
};
h(这个,args);
}
}
公共覆盖无效写线(字符串消息)
{
写入(消息+“\r\n”);
}
}
公共类DebugMessageArgs:EventArgs
{
公共字符串消息
{
得到;
设置
}
}
要接收调试消息,请实例化DebugOutputListener的实例,订阅DebugMessage事件处理程序,并向debug.Listeners集合注册侦听器

e、 g

private void InitialiseDebugListener()
{
DebugListener dl=新的DebugListener();
dl.DebugMessage+=新的EventHandler(控制台消息);
Debug.Listeners.Add(dl);
}
私有void控制台\u OnDebugMessage(对象发送方,DebugMessageArgs e)
{
字符串debugMessage=e.Message;
//使用debugMessage执行所需操作。
//请注意,这可能不会出现在应用程序/表单线程中。
}

我也使用TraceListener进行此操作,但以下是我的代码片段:

课程:

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:TraceListener
{
公共事件处理程序调试消息;
公共重写无效写入(字符串消息)
{
EventHandler h=调试消息;
如果(h!=null)
{
DebugArgs args=新的DebugArgs
{
消息=消息
};
h(这个,args);
}
}
公共覆盖无效写线(字符串消息)
{
写入(消息+“\r\n”);
}
}
公共类DebugMessageArgs:EventArgs
{
公共字符串消息
{
得到;
设置
}
}
要接收调试消息,请实例化DebugOutputListener的实例,订阅DebugMessage事件处理程序,并向debug.Listeners集合注册侦听器

e、 g

private void InitialiseDebugListener()
{
DebugListener dl=新的DebugListener();
dl.DebugMessage+=新的EventHandler(控制台消息);
Debug.Listeners.Add(dl);
}
私有void控制台\u OnDebugMessage(对象发送方,DebugMessageArgs e)
{
字符串debugMessage=e.Message;
//使用debugMessage执行所需操作。
//请注意,这可能不会出现在应用程序/表单线程中。
}