C# 政务司司长脚本及;System.Diagnostics.Debug:重写调试输出跟踪
好吧,我觉得标题可能会让人很困惑……:) 我的应用程序使用CS脚本作为脚本接口。 在我的应用程序将要运行的脚本中,我希望有某种“调试打印”——这意味着脚本编写者可以在脚本中的某个地方执行“Debug.print”(“BLAAAAH!!!”);),这将显示在我非常时髦的输出对话框中 当然,我可以创建自己的调试输出内容,但由于我使用C作为脚本语言,使用C的人将使用System.Diagnostics和debug.Print(“…”),因此, 如果我可以重新路由System.Diagnostics.Debug.Print(“”)和System.Diagnostics.Debug.WriteLine(“…”),将它们的输出跟踪到我的酷输出窗口,那就太好了 所以C# 政务司司长脚本及;System.Diagnostics.Debug:重写调试输出跟踪,c#,debugging,C#,Debugging,好吧,我觉得标题可能会让人很困惑……:) 我的应用程序使用CS脚本作为脚本接口。 在我的应用程序将要运行的脚本中,我希望有某种“调试打印”——这意味着脚本编写者可以在脚本中的某个地方执行“Debug.print”(“BLAAAAH!!!”);),这将显示在我非常时髦的输出对话框中 当然,我可以创建自己的调试输出内容,但由于我使用C作为脚本语言,使用C的人将使用System.Diagnostics和debug.Print(“…”),因此, 如果我可以重新路由System.Diagnostics.D
有人知道是否可以将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执行所需操作。
//请注意,这可能不会出现在应用程序/表单线程中。
}