`
buliedian
  • 浏览: 1237574 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WinCE 5.0边做边学(5)

阅读更多
对于实时系统,如何调试是一个很难解决的问题,包括对系统内核的调试,对驱动程序的调试,对应用程序的调试等。对于应用程序,通常各集成开发环境都提供了常规的单步跟踪等调试手段。而对于另两个的调试,Platform Builder除了为我们提供了常规的断点跟踪等手段以外,还和系统的源程序配合使用了一种新的调试手段——Debug Zones调试区。
通常,我们都是利用OutpubDebugString函数来实现调试信息的输出的,但是由于系统底层的调试信息非常繁多,如果这样大量的调试信息用于实时输出的话一定会影响到系统的性能和实时性,也就影响到了系统的运行。如果有一种方式能允许开发人员自己选择输出哪些调试信息,不输出哪些调试信息的话,那么就可以让开发人员只看到关心的调试信息,而把诸如键盘按键、鼠标移动等无用的调试信息隐去,则可以更好的提高开发效率,迅速找到问题所在。
调试区就是为了解决以上提出的问题的,对某一个驱动程序,它规定好自己向外输出的调试信息的分类,比如初始化时的信息,出错时的信息,释放时的信息,激活时的信息等,然后分成几个调试区,在现有的CE版本中最多允许16个调试区。开发人员通过Platform Builder中Target菜单下的CE Debug Zones命令来决定想要得到哪一个或哪几个调试区的信息,在驱动程序中则可以根据开发人员的选择来输出指定调试区的信息。这就是调试区大体上的工作原理。
接下来,我们就来看一下调试区的定义,声明,注册及使用。
在程序中使用调试区之前必须先定义它们,一个程序的16个调试区编号分别为0-15。代码样例如下所示:
#ifdef DEBUG
//
// For debug builds, use the real zones.
//
#define ZONE_TEST DEBUGZONE(0)
#define ZONE_PARAMS DEBUGZONE(1)
#define ZONE_VERBOSE DEBUGZONE(2)
……
#define ZONE_WARN DEBUGZONE(14)
#define ZONE_ERROR DEBUGZONE(15)

#else
//
// For retail builds, use forced messages based on the zones turned on below.
//
#define ZONE_TEST 0
#define ZONE_PARAMS 0
#define ZONE_VERBOSE 0
……
#define ZONE_WARN 0
#define ZONE_ERROR 0

#endif

这样,就可以程序的DEBUG版本中使用调试区了,而在RELEASE版本中则将其全部定义为0,调试信息即不再输出。
在程序中,除了以上的定义以外,还要声明几个专用的调试信息输出函数,这些函数与OutputDebugString函数的区别就在于在调用时需要指定对应的调试区,这些函数以及以上用到的DEBUGZONE宏的定义都在DbgApi.h头文件中,因此只要在源程序中包含此头文件即可。除此以外,还需要一个全局的DEBPARAM类型的变量命名为dpCurSettings,以供集成开发环境和调试信息输出函数使用。其代码样例如下:
#ifdef DEBUG
DBGPARAM dpCurSettings = {
TEXT("WaveDriver"), {
TEXT("Test") // 0
,TEXT("Params") // 1
,TEXT("Verbose") // 2
,TEXT("Interrupt") // 3
,TEXT("WODM") // 4
,TEXT("WIDM") // 5
,TEXT("PDD") // 6
,TEXT("MDD") // 7
,TEXT("Regs") // 8
,TEXT("Misc") // 9
,TEXT("Init") // 10
,TEXT("IOcontrol") // 11
,TEXT("Alloc") // 12
,TEXT("Function") // 13
,TEXT("Warning") // 14
,TEXT("Error") // 15
}
,
(1 << 15) // Errors
| (1 << 14) // Warnings
};
#endif
此例中还把ERROR和WARN调试区作为默认被开发人员选中的调试区。
要想使用调试区,还需要做的最后一件准备的事情就是在程序中进行注册,也就是在程序启动时通知集成开发环境本程序中要使用调试区,这个注册很简单,只要在程序的入口处使用DEBUGREGISTER宏即可,样例如下:
DllEntry (
HANDLE hinstDLL,
DWORD Op,
LPVOID lpvReserved
)
{
switch (Op) {

case DLL_PROCESS_ATTACH :
DEBUGREGISTER((HINSTANCE)hinstDLL);
break;
……
至于调试区的使用,完全是几个宏的使用而已,我想做程序的人都会用的,常用的宏如下:
DEBUGMSG(),DEBUGLED(),RETAILMSG(),RETAILLED(),ERRORMSG(),DEBUGCHK()

好了,调试区就概要的说了这么多,如此复杂的机制在自己的程序中写起来是烦琐了点,不过如果你需要的话,可以从CE现有的例程序中复制过来,这样就省了很多麻烦事,也不会出错。下图是在PB中使用调试区的截图,当选中某一个调试区后,如果该调试区有调试信息则会在DEBUG窗口输出的。自己试试吧!

分享到:
评论

相关推荐

    WinCE 5.0边做边学

    《WinCE 5.0边做边学》是一本深入浅出地介绍Windows CE 5.0操作系统开发和应用的教程。Windows CE是微软推出的一个嵌入式操作系统平台,广泛应用于掌上设备、工业控制、车载系统等领域。本书旨在帮助读者通过实践...

    WINCE5.0应用程序

    5. **sys_zk1.9**: 压缩包中的"sys_zk1.9"可能是一个特定的系统组件或库,可能是用于WINCE5.0的定制组件,例如设备驱动、服务或者一个应用程序框架。具体的功能和使用方法需要查看其文档或源代码才能详细了解。 6. ...

    WinCE5.0中文模拟器SDK

    **WinCE5.0中文模拟器SDK详解** WinCE5.0中文模拟器SDK是针对Windows Embedded Compact 5.0(原名Windows CE)开发的一个重要工具,它为开发者提供了一个在桌面环境下模拟Windows CE设备运行环境的平台。这个模拟器...

    WinCE 5.0 软件合集(内置25个程序)

    内置25个WinCE5.0程序,包括系统工具,媒体播放、游戏、计算器等 这些的程序都是由通过网络收集的 程序能都在WinCE5.0上完美运行(分别在WinCE5.0模拟器和装有WinCE5.0的导航仪上成功运行)

    WinCE5.0模拟器.rar_win ce_win ce 5.0 模拟器_电脑模拟_电脑车操作_车机

    《WinCE5.0模拟器:打造车机操作体验的电脑仿真平台》 Windows CE(简称WinCE)是微软公司开发的一种嵌入式操作系统,它主要用于小型设备,如掌上电脑、车载信息娱乐系统等。在本文中,我们将深入探讨WinCE5.0...

    嵌入式系统/ARM技术中的WinCE 5.0边练边学(5)(6)

    工欲善其事,必先利其器    对于实时系统,如何调试是一个很难解决的问题,包括对系统内核的调试,对驱动程序的调试,对应用程序的调试等。对于应用程序,通常各集成开发环境都提供了常规的单步跟踪等调试手段。...

    wince5.0下的一些小游戏

    在Windows CE 5.0(简称WinCE5.0)操作系统上,有一系列小游戏可供用户娱乐。Windows CE是微软开发的一个嵌入式操作系统,广泛应用于各种设备,包括车载信息系统、手持设备等。在这个环境下,由于硬件限制和系统特性...

    WinCE5.0模拟器(中文).rar

    WinCE5.0模拟器是基于Windows Embedded Compact 5.0操作系统的一个开发和测试工具,它允许开发者在桌面PC上模拟Windows CE系统的行为,以便在实际硬件设备部署之前进行应用程序的开发、调试和测试。这个“WinCE5.0...

    WinCE5.0中文模拟器SDK(VS2005) Part2

    目前权限只能上传45MB大小的文件,只能分包压缩上传了,需要用的请将两个压缩包都下载下来再解压缩。

    WinCE5.0模拟器(win7)

    5. 用户界面测试:在模拟器上预览和测试用户界面,确保其在WinCE5.0系统上的表现符合预期。 需要注意的是,尽管模拟器提供了很多便利,但其性能可能会受到主机系统资源的限制,与实际硬件运行可能存在差异。因此,...

    WinCE5.0manual.rar_wince5_wince5.0

    本资料主要针对WinCE5.0的操作系统特性、开发环境以及应用编程进行详细介绍,旨在帮助开发者深入理解和应用这一平台。 一、WinCE5.0概述 Windows CE 5.0是微软的实时操作系统(RTOS)系列之一,具有轻量级、可裁剪...

    wince5.0.rar_OK2440 bsp_ok2440_wince5_wince5.0 _wince5.0 bsp

    本资源包“wince5.0.rar_OK2440 bsp_ok2440_wince5_wince5.0 _wince5.0 bsp”是针对OK2440开发板的WinCE5.0 BSP(Board Support Package)更新版,旨在为开发者提供更加稳定和高效的平台支持。 首先,让我们深入...

    WinCE5.0中文模拟器VS2008

    《深入理解WinCE5.0中文模拟器与VS2008开发环境》 Windows CE 5.0,作为微软推出的嵌入式操作系统,广泛应用于各种小型设备和嵌入式系统中。为了方便开发者在Windows平台上进行WinCE应用的调试和测试,微软提供了...

    wince5.0环境下播放器

    在Windows CE 5.0(简称WinCE5.0)环境下,开发和运行多媒体播放器是一项重要的任务。这个操作系统主要用于嵌入式设备,如手持设备、车载系统等,因此一个功能完善的播放器对于提升用户体验至关重要。标题提到的...

    WINCE5.0 的应用开发环境

    1. **复制光盘内容**:将PB 5.0安装光盘的内容完整地复制到本地硬盘的一个目录下,例如`D:\PB5SET`。 2. **运行安装程序**:执行`SETUP.EXE`启动安装向导,按照提示输入序列号等必要信息。 3. **选择处理器架构**:...

    WinCE5.0笔记本工具、软件及游戏

    5. **用户界面**:虽然不如Windows桌面系统那样丰富,但WinCE5.0提供了基本的窗口管理、任务切换和图标操作等功能,为用户提供友好的交互体验。 6. **网络功能**:内置对TCP/IP协议的支持,可以进行网页浏览、邮件...

    wince 5.0 setup PB5.0开发环境的应用

    Windows CE 5.0(简称WinCE 5.0)是一种嵌入式操作系统,由Microsoft公司开发,广泛应用于各种智能设备和嵌入式系统中。它提供了基础的系统内核、设备驱动支持以及应用程序框架,使得开发者能够创建定制化的、高性能...

    eboot.rar_2410 wince 5.0_eboot S3C24_wince 5.0 ebo_wince5.0 _wi

    标题中的“eboot.rar_2410 wince 5.0_eboot S3C24_wince 5.0 ebo_wince5.0 _wi”提到了几个关键概念,分别是“eboot”,“S3C2410”,“Windows CE 5.0”(wince5.0)。这表明我们正在讨论基于ARM9处理器S3C2410的...

    wince5.0.rar_wince5.0

    这个压缩包文件“wince5.0.rar_wince5.0”显然包含了关于WinCE 5.0驱动开发的相关资料,特别是驱动开发流程的介绍,对于想要学习或已经在从事WinCE 5.0驱动程序开发的工程师来说非常有价值。 驱动程序是操作系统与...

    WinCE 5.0边练边学(5)(6)

    工欲善其事,必先利其器    对于实时系统,如何调试是一个很难解决的问题,包括对系统内核的调试,对驱动程序的调试,对应用程序的调试等。对于应用程序,通常各集成开发环境都提供了常规的单步跟踪等调试手段。...

Global site tag (gtag.js) - Google Analytics