阅读System.Diagnostics.Debug窗口

时间:2012-04-17 19:27:42

标签: c#

我有一个Netduino,它当前正在向系统输出加速度计数据。 Diagnostics.Debug窗口。我正在等待邮件中的USB-> 232转换器通过串口正确地将设备中的数据存入我的应用程序但我想知道是否有人可以快速测试,如果有人知道是否可以从中读取数据调试窗口回到我的应用程序?

编辑 - 解决方案: 我在这里发布这个想要我的解决方案的人。我原本以为Nuf的答案是“使用TraceListener类可以捕获写入System.Diagnostics.Debug的数据.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();
            }

可能有更好的方法,但这只是一个对我有用的方式,所以我想我会分享它。

2 个答案:

答案 0 :(得分:1)

可以使用TraceListener类捕获写入System.Diagnostics.Debug的数据。 MSDN简短tutorial如何设置它。

答案 1 :(得分:1)

有两种方法可以设置它,一种方法是在app.config文件中以声明方式设置它。这样做有很多好处,例如在需要更改时无需重新编译应用程序。

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="configConsoleListener" 
          type="System.Diagnostics.ConsoleTraceListener" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

或者,您也可以在代码中执行此操作,以将Debug跟踪输出到应用程序的控制台窗口。

Debug.Listeners.Add(new ConsoleTraceListener());