Mike Hall
Microsoft
适用于:
Microsoft Windows CE 5.01
摘要:本文提供了有关调试工具的实践性概述,该调试工具可用于跟踪基于 Windows CE 的应用程序或驱动程序中的泄漏。您将针对运行在 Windows CE 仿真程序上的 Windows CE 5.0 操作系统映像来创建、自定义、构建、下载、调试以及使用远程工具。
该实验大约需要 60 分钟完成。
从 Microsoft 下载中心下载 Windows CE 5.0 Embedded Development Labs.msi。
本页内容
第 1 部分:创建平台映像
第 2 部分:自定义和构建平台
第 3 部分:下载平台
第 4 部分:远程工具和内存泄漏
第 5 部分:其他 Windows CE 远程工具
小结
第 1 部分:创建平台映像
在 Platform Builder 内使用 New Platform Wizard 来创建初始平台工作区,之后通过添加应用程序以及更新注册表对其进行修改。
单击 Start | All Programs | Windows CE 5.0 | Platform Builder 启动 Platform Builder。现在,就可以通过使用 Platform Wizard 来创建平台了。
可以单击该缩略图以查看大图像。
要创建新平台工作区
-
选择 File | New Platform。
下图中的对话框概述了创建平台的过程。现在,需要按照向导的提示逐步执行,并进行相应的选择。
单击 Next。
如下图所示,New Platform Wizard 的下一步将提示您输入要构建的平台名称和位置。在 Microsoft Windows CE 4.2 中,将在 C:/WINCE420/PUBLIC 文件夹中创建自定义平台。Windows CE 5.0 会将自定义工作区分隔在一个名为 C:/WINCE500/PBWorkspaces新文件夹中。
-
输入名称 MyPlatform
-
单击 Next。
通过选择 EMULATOR:X86 为 Windows CE 5.0 仿真程序构建一个操作系统,如下图所示。如果需要,可以选择多个参考板。然后,在构建时,可以选择构建和下载哪个平台。在硬件仍处于开发阶段时,选择仿真程序和参考板会比较有用,因为这样您可以在仿真程序中配置和测试操作系统映像,而无需物理硬件。
-
单击 Next。
现在,可以从许多示例平台中进行选择,或者,如果没有一个选项符合您的需要,则可以只选择 Custom Device 并根据从目录选取的组件来构建映像。
由于本教程的目的所在,您需要从平台配置列表中选择 Internet Appliance,如下图所示。
-
单击 Next。
每个示例平台都有许多选项可供选择,而 Platform Wizard 只显示与您要构建的平台相关的选项。例如,在 headless 设备(例如,网关)中包括 Internet Explorer 或 WordPad 应用程序毫无意义。Internet 应用设备可以包括诸如 Internet 浏览器、Microsoft Windows Media Player 和 Microsoft Windows Messenger 之类的应用程序,也可以选择性地包含其他应用程序。可以通过包含来自目录的组件或从项目工作区中移除组件,以进一步对平台进行自定义。
在本例中,如下图所示,无需 Microsoft .NET Compact Framework 或任何 Windows Media 组件,因此可以将这些项清除。
-
单击 Next。
在 Networking and Communications 页上,您可以看到 Windows CE 对个人网络、局域网及广域网均支持。如下图所示,在本例中,采用默认选项即可。
-
单击 Next。
如下图所示,即可完成向导。您已经配置了 Windows CE 平台,现在,通过向平台添加或从其中移除组件,可以对平台进行进一步的自定义。
-
单击 Finish。
现在,您就具有了包含所有选自 Platform Wizard 的 Windows CE 组件的平台工作区。通过向工作区添加其他技术和特定于平台的驱动程序,可以进一步自定义该平台,或者,可以移除任何由向导添加但您的平台并不需要的组件。
第 2 部分:自定义和构建平台
在本部分练习中,您将执行以下过程:
-
启用分析内核和事件跟踪
-
创建 memLeak 应用程序,并将其添加到平台
-
创建 GDILeak 应用程序,并将其添加到平台
-
创建 Philosophers 应用程序,并将其添加到平台
-
配置 Philosophers 应用程序
-
构建平台
默认构建选项是生成操作系统的 Release 映像。如下图所示,使用工具栏从 Release 构建切换到 Debug 构建。
现在就可开始构建平台了。但是,在第 4 部分:远程工具和内存泄漏中,将使用 Remote Kernel Tracker 工具,因此,需要启用分析内核。
要启用分析内核和事件跟踪
-
选择 Platform | Settings。
-
在 Platform Settings 对话框上选择 Build Options 选项卡,如下图所示。
您会注意到之前的图示中,工具当前设置为构建平台的 Debug 映像。虽然启用了内核调试,但是要使用 Remote Kernel Tracker 工具,还需要启用分析内核和事件跟踪。
-
选择 Enable Profiling。
-
选择 Enable Event Tracking During Boot。
-
单击 OK。
您已向自己的平台添加了三个应用程序:memLeak、GDILeak 和 Philosophers。这些应用程序的源代码已经被写入并存储在 Code Clip 应用程序中。现在,需要创建这些应用程序并将其添加到平台工作区。
memLeak 应用程序是带有用户界面的 Windows 应用程序。您可以使用该应用程序来呈现调试区域以显示来自应用程序或驱动程序的重要调试信息、如何使用 Remote Performance Monitor 来监视操作系统内的内存负载,以及如何使用 CeLogData 将自定义数据项输出到 Remote Kernel Tracker 数据流中。memLeak 应用程序是多线程的,使用项目向导来创建该应用程序。本实验稍后部分,将对该应用程序中使用的代码进行分析。
要创建 memLeak 应用程序并将其添加到平台
-
选择 File | New Project or File。
-
选择 WCE Application,如下图所示。
-
在 Project name 框中,键入 MemLeak。
-
单击 OK。
-
键入您的特征信息,如下图所示,然后单击 Next。
如下图所示,出现三个选项:An empty project、A simple Windows CE application 或 a typical "Hello World" application。
-
选择 A simple Windows CE application。
-
单击 Finish。
项目向导已经创建了一个简单的 Win32 应用程序,该应用程序带有 WinMain 的入口点,无其他代码。现在需要向该应用程序添加一些代码。
-
在 Workspace 窗口中,选择 File View。
-
将工作区展开至 Projects | MemLeak | Source files。
-
双击 MemLeak.cpp。该步骤将打开 memLeak 应用程序的源代码。
-
选择该应用程序的所有代码。
-
按 DELETE 以删除所有代码。
-
从桌面打开 Code Clip。.
-
找到并打开 Platform Builder Advanced Lab 项。
-
双击 MemLeak。该步骤会将 memLeak 源代码复制到剪贴板。
-
在 Platform Builder 中,选择 Edit | Paste,或右键单击 Paste。memLeak 代码被添加至代码窗口。
现在,可开始向平台添加第二个应用程序了:GDILeak。该应用程序是一个带有用户界面的 Windows 应用程序。GDILeak 应用程序将用于说明如何使用 Application Verifier 工具来检查应用程序的运行库。在编写 Win32 应用程序时,可能容易忽略一个图形设备接口 (GDI) 句柄,创建该句柄是用于绘制应用程序的工作区的。每个未释放回操作系统的 GDI 句柄都泄漏 4 个字节。这个数量会随着时间的推移而增长,因此,需要运行 Application Verifier 工具来检查该应用程序的运行库。
要创建 GDILeak 应用程序并将其添加到平台
-
选择 File | New Project or File。
-
选择 WCE Application,如下图所示。
-
在 Project name 框中,键入 GDILeak。
-
单击 OK。
-
键入您的特征信息,如下图所示,然后单击 Next。
如下图所示,出现三个选项:An empty project、A simple Windows CE application 或 a typical "Hello World" application。
-
选择 A simple Windows CE application。
-
单击 Finish。
项目向导已经创建了一个简单的 Win32 应用程序,该应用程序带有 WinMain 的入口点,无其他代码。现在,需要向该应用程序添加一些代码。
-
在 Workspace 窗口中,选择 File View。
-
将工作区展开至 C:/WINCE500 | Projects | GDILeak | Source files。
-
双击 GDILeak.cpp。该步骤将打开 GDILeak 应用程序的源代码。
-
选择该应用程序的所有代码。
-
按 DELETE 以删除所有代码。
-
从桌面打开 Code Clip。
-
找到并打开 Platform Builder Advanced Lab 项。
-
双击 GDILeak。该步骤会将 GDILeak 源代码复制到剪贴板。
-
在 Platform Builder 中,选择 Edit | Paste,或右键单击 Paste。GDILeak代码被添加至代码窗口。
现在,可开始向平台添加最后一个应用程序了:Philosophers。该应用程序是一个带有用户界面的 Windows 应用程序。在本例中,将使用“进餐的哲学家”问题,一个经典的多进程同步问题。该问题中,五位哲学家围桌而坐,他们只做两件事:思考和进餐。每位哲学家之间,有一支筷子。为了进餐,每位必须具备两支筷子。如果每个人都先取右侧的筷子,然后再拿左侧的筷子,会出现一个问题。在这种情况中,出现了僵局,所有的哲学家都会挨饿。而且,这些哲学家应当机会平等并且不会长时间占有筷子;因此,每位哲学家的进食量应当彼此相等。
要创建 Philosophers 应用程序并将其添加到平台
-
选择 File | New Project or File。
-
选择 WCE Application,如下图所示。
-
在 Project name 框中,键入 Philo。
-
单击 OK。
-
键入您的特征信息,如下图所示,然后单击 Next。
如下图所示,出现三个选项:An empty project、A simple Windows CE application 或 a typical "Hello World" application。
-
选择 A simple Windows CE application。
-
单击 Finish。
项目向导已经创建了一个简单的 Win32 应用程序,该应用程序带有 WinMain 的入口点,无其他代码。现在,需要向该应用程序添加一些代码。
-
在 Workspace 窗口中,选择 File View。
-
将工作区展开至 C:/WINCE500 | Projects | Philo | Source files。
-
双击 Philo.cpp。该步骤将打开 Philo 应用程序的源代码。
-
选择该应用程序的所有代码。
-
按 DELETE 以删除所有代码。
-
从桌面打开 Code Clip。
-
找到并打开 Platform Builder Advanced Lab 项。
-
双击 Philosophers。该步骤会将 Philosophers 源代码复制到剪贴板。
-
在 Platform Builder 中,选择 Edit | Paste,或右键单击 Paste。Philosophers Ô´代码被添加至代码窗口。
现在,要针对 Philosophers 应用程序来运行 Remote Call Profiler。为此,需要确保 Philo 项目配置正确。
要配置 Philosophers 应用程序
-
在 File 视图中,右键单击 Philo Project(Philo 应用程序的顶部节点)。
-
选择 Settings。
-
选择并打开 Custom Variables,如下图所示。
-
单击 New,如下图所示。
-
在 Variable name 框中,键入 WINCECALLCAP,如下图所示。
-
在 Variable value 框中,键入 1。
-
单击 OK。
您还需要为该项目生成 .map 文件。
-
在 Custom Variables 对话框中,单击 New。
-
在 Variable name 框中,键入 WINCEMAP,如下图所示。
-
在 Variable value 框中,键入 1。
-
单击 OK。
-
单击 OK。
现在,就可以开始构建平台了。
要构建平台
-
选择 OS Design View。
-
选择 Build OS | Sysgen。
注 构建过程需要大约 10 分钟来完成。