正在阅读“系统.诊断.调试”窗口
本文关键字:诊断 调试 窗口 系统 | 更新日期: 2023-09-27 18:31:22
我有一个Netduino,它目前正在向系统输出加速度计数据。诊断。调试窗口。我正在等待邮件中的 USB->232 转换器,以通过串行端口将数据从设备正确获取到我的应用程序中,但我想知道只是为了快速测试目的,是否有人知道是否可以将数据从调试窗口读回我的应用程序?
编辑 - 解决方案:我在这里发布这个给任何想要我的解决方案的人。我最初认为Nuf的答案有效"写入System.Diagnostics.Debug的数据可以使用TraceListener类捕获。 MSDN有简短的教程如何设置它。 但我发现侦听器只能从它自己的应用程序中获取数据。由于我使用的是Netduino,因此Debug输出来自不同的程序,这意味着跟踪侦听器无法读取它。所以我找到了一种直接读取输出框中文本的方法。
基于 MSDN 中的代码:您将需要 3 个对项目的引用。它们位于 .Net 引用选项卡中 - EnvDTE、EnvDTE80 和扩展性。
using EnvDTE80;
using EnvDTE;
using Extensibility;
public static string ReadDebugBox()
{
EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0");
string data = "";
OutputWindow ow = dte.ToolWindows.OutputWindow;
OutputWindowPane owP;
TextDocument owPTxtDoc;
EditPoint2 strtPt;
owP = ow.OutputWindowPanes.Item("Debug");
owP.Activate();
owPTxtDoc = owP.TextDocument;
strtPt = (EditPoint2)owPTxtDoc.StartPoint.CreateEditPoint();
return strtPt.GetText(owPTxtDoc.EndPoint);
}
public static void ClearDebugBox()
{
EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0");
OutputWindow ow = dte.ToolWindows.OutputWindow;
OutputWindowPane owP;
TextDocument owPTxtDoc;
EditPoint2 strtPt;
owP = ow.OutputWindowPanes.Item("Debug");
owP.Activate();
owP.Clear();
}
可能有更好的方法,但这只是一种对我有用的方法,所以我想我会分享它。
写入 System.Diagnostics.Debug 的数据可以使用 TraceListener 类捕获。 MSDN 有简短的教程如何设置它。
有两种方法可以设置它,一种方法是在 app.config 文件中以声明方式设置它。这样做有很多好处,例如在需要更改时不需要重新编译应用程序。
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="configConsoleListener"
type="System.Diagnostics.ConsoleTraceListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
或者,也可以在代码中执行此操作,以将调试跟踪输出到应用程序的控制台窗口。
Debug.Listeners.Add(new ConsoleTraceListener());