一次Windows CE下调试内存泄露的经历

- 嵌入式

上周二,软院的万老师打电话告诉我,说汽车学院以前写的一个Windows CE程序内存泄露比较严重。想让我帮忙调试一下。结果上一周都没有时间,昨天周一到软院上课的时候,听王老师说那个泄露程序已经惊动了同济大学校长万钢,因为他要拿那个程序给领导演示,不能再拖了。偶颇有点临危受命的感觉。晚上下了课,就一头扎到研发中心的机器前,开始工作。

这是一个电子仪表程序,代码从串口读取汽车数据,包括车速,油亮,车轮转速等等,然后解析数据,并把数据显示在屏幕上。在研华7230的开发板上运行,结果不出10秒钟就弹出对话框,Out of Memory! Win CE这个小嵌入式系统,每个进程只有32M的虚拟地址空间。他那个程序本身就有4M的样子(因为有太多的图片)。

我首先想到的是把这个程序在Windows上重新编译运行,因为毕竟这段代码没有用到什么Windows CE特有的函数,全是通用的Win32 API。而且在Windows下调试内存泄露还有大量的工具和经验可以利用。说干就干,打开VC6,新建一个工程,Copy文件,编译,几个小Error拦不住我,马上一个Executable File就出来了。下面安装在GTEC时候常用的LeakDiag和Numega的BoundsChecker。但是,出乎我意料的是,这个程序无论是用LeakDiag还是BoundsChecker …

more ...

使用Windows CE .NET 测试包 (CETK)构建和测试设备

  • 嵌入式
  • 软件

James Zwygart

微软公司

2003年一月

适用于:

 Microsoft® Windows® CE .NET

概述: Windows CE .NET测试包(CETK)是一个可以极大的增强平台可靠性的强大工具。此工具可以普遍的被用在开发中的平台和已发布的设备。本文描述了使用Windows CE .NET测试包的使用,板级支持包(BSP)的认证,和驱动程序验证。

内容

介绍

Windows CE .NET 测试包

使用Windows CE .NET测试包

BSP认证

驱动程序验证

结论

更多信息

介绍

Microsoft® Windows® CE .NET测试包(CETK)是一个可以用来测试单个驱动程序或整个平台的工具。CETK中的测试工具可以提供你的驱动程序的功能的反馈,这可以用来进一步增强你的设备的可靠性。更多的测试可以被添加到Windows …

more ...

理解Windows CE .NET的文件系统架构

概述: 在本月的文章中,我们来看一下Windows CE .NET的文件系统,它的组件,以及如何扩展文件系统。

如果你是微软Windows CE .NET的新闻组的常客,你会发现反复有关与文件系统,尤其是关于基于蜂箱(hive-based)的注册表的问题(如果你不经常阅读那些新闻组,鄙视你!)。本月的文章中,我们将深入到与这些特性的实现相关的系统的不同部分中。首先,我们看一下Windows CE .NET的文件系统结构,因为它是我们要研究的其他特性的基础。在剩下的文章中,我们会讨论对象存储和系统注册表示如何工作的。

Windows CE .NET文件系统是灵活的模块化设计的,它允许自定义的文件系统,过滤器,和大量不同的块设备。文件系统和所有文件系统相关的API都在FileSys.exe进程的管理下。这个模块实现了对象存储和存储管理器(一会我们就稍微研究一下对象存储)并把所有的文件系统统一为在一个根下的单一的系统,“\”。在Windows CE .NET中,所有的文件和文件系统存在于一个以“\”作为根开始的单一命名空间内。所有的文件都以从根开始的树形层次结构的单一路径来确定。这与桌面版的Windows很相近,除了没有驱动器名。在Windows CE中,驱动器被挂接为根目录下的文件夹。因此,一个新添加到系统中的存储卡被以类似“\Storage …

more ...

Windows CE .NET 高级内存管理

Windows CE .NET 高级内存管理

Douglas Boling, 嵌入式 Windows MVP

Boling Consulting

2002年八月

适用于:

Microsoft® Windows® CE .NET

Microsoft Windows CE 3.0

Pocket PC 2002

内容

摘要

在盒子里生活

动态连接库(DLL)加载问题

摘要

Microsoft Windows CE的优势之一是它支持Win32 应用程序接口(API)。 成千上万的windows程序员就可以利用他们的Win32 API和MFC知识而几乎没有困难的转移到Windows CE上来。Windows CE实现了Win32 API的一个子集,但是程序员不应该忘记Windows CE与Windows XP是完全不同的两个操作系统,他们有着不同的需求和实现。知道Windows …

more ...