65.9K
CodeProject 正在变化。 阅读更多。
Home

Compact Framework 应用的跟踪

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.32/5 (10投票s)

2003年10月9日

CPOL

3分钟阅读

viewsIcon

119877

downloadIcon

1655

本文提出了一种解决方案,可以缓解在构建基于 Compact Framework 的 Pocket PC 应用时缺乏调试控制台的问题。

Tcptrace demo

引言

在开发 Pocket PC 应用程序时,Visual Studio IDE 中我最怀念的功能之一就是在“输出”窗格中看到我通常散布在代码中的跟踪消息。如果您已经开发代码一段时间,您就知道第二好的选择是有一个控制台窗口,您可以在其中看到这些消息。

由于缺乏构建与 IDE 集成的解决方案的知识和时间,我在本文中展示了一个控制台应用程序,它可以在主机 PC 上显示传递给紧凑框架代码中 System.Diagnostics.Debug.WriteSystem.Diagnostics.Debug.WriteLine 调用的字符串,这些代码运行在 Pocket PC 上。

背景

  1. 套接字 (Sockets)

    套接字是几乎所有系统中连接两个应用程序最简单的方式之一。但在 .NET Framework 中,您可以找到一对互补的类,它们可以进一步简化套接字 API:System.Net.Sockets.TcpClientSystem.Net.Sockets.TcpListener。当然,它们的底层实现利用了套接字,并且对于任何曾经对套接字 API 进行过编程的人来说,它们的使用模式应该不会令人惊讶。

    TcpListenerTcpClient 的同步阻塞通信不像套接字那样提供所有灵活性,但在这方面,它们满足了我适度的要求。

    有关 套接字System.Net.Sockets 命名空间 的更多信息,请参阅 MSDN 库。

  2. 跟踪监听器

    Systems.Diagnostics 命名空间提供了一种机制,允许对跟踪消息进行多重输出。当您调用 DebugTrace 类的 WriteWriteLine 方法系列时,它们会调用已为此目的注册的每个监听器的相应方法。系统提供了一些 TraceListener 抽象类的实现,它们将消息定向到调试器的输出窗口、输出流或事件日志。如果您的需求与系统提供的选项不同,则需要编写自己的 System.Diagnostic.TraceListener 实现并将其添加到监听器集合中。

    您可以在 此处 找到有关跟踪监听器的文档。

使用代码

调试控制台

TcpTraceConsole 是一个充当服务器的控制台应用程序。它等待连接到达其命令行中指定的 IP 地址和端口。当建立连接时,它仅使用 System.Console.WriteLine 来显示收到的每个消息。

显然,必须在运行 Pocket PC 应用程序之前在主机 PC 上启动它。例如,如果您的 PC 的 IP 地址是 192.168.1.1 并且其端口 14001 尚未被使用

C:>TcpTraceConsole 192.160.1.1 14001

跟踪监听器

我直接从 TraceListener 派生了 TcpTrace.TcpTraceListener,并重写了 WriteWriteLine 方法,通过 TcpClient 实例将它们的输出重定向到控制台应用程序。此类被打包在自己的程序集中,因此可以在任何应用程序中使用。

  1. 在您的项目中添加对 TcpTrace.dll 的引用
  2. 在调用代码中的任何 Debug.Trace 之前,调用静态方法 TcpTrace.InstallTcpTraceListener。如果您使用带有参数的版本,则需要提供与启动 TcpTrace 控制台应用程序时使用的相同地址和端口。如果您使用不带参数的版本,则您的工作目录必须包含一个应用程序配置文件,其中以以下方式指定地址和端口:

    <configuration>
      <appSettings>
        <add key="TcpTraceServer" value="<SERVER_NAME>" />
        <add key="TcpTracePort" value= "<PORT_NUMBER>" />
      </appSettings>
    </configuration>

在源代码以及演示 .zip 文件中,包含了一个 Pocket PC WinForms 应用程序,演示了 TcpTrace.TcpTraceListener 的用法。

要运行 PpcTraceClient.exe 应用程序,您必须:

  1. PpcTraceClient.exePpcTraceClient.exe.configTcpTrace.dllNetTech.Configuration.dll 文件复制到设备上的一个文件夹中。
  2. 编辑 PpcTraceClient.exe.config 并更新 TcpTraceServerTcpTracePort 条目,以匹配 TcpTraceConsole 正在监听的 IP 地址和端口。

在使用监听器时,我发现的一个小麻烦是,在我的实际设备上,当通过 USB 连接连接到我的台式 PC 时,我必须使用 PC 的 DNS 名称而不是其 IP 地址,而在模拟器中,我必须使用 IP 地址。您在您的配置中可能会发现不同的行为。

© . All rights reserved.