这篇要介绍的是我自己写的一个用于监控Windows CE运行时系统状态的工具-Windows CE Remote Process Explorer。2004年我开始从事Windows CE平台的开发,之前我对Windows CE几乎一无所知,为了了解Windows CE的系统机制,我利用业余时间写了这个工具。到目前为止,它已经具有了相当多的功能,也帮我解决了很多工作上的问题。
简介
如果你想监控CE下每个进程、线程的CPU使用率,或者想知道每个线程被什么模块什么时刻创建、线程当前的调用栈,或者想知道应用程序运行一段时间后进程堆的使用情况、内存碎片的分布,等等,这个工具都能给你直观的答案。
Windows CE Remote Process Explorer(以后简称CE Process Explorer)是一个和Mark Russinovich的Process Explorer类 似的工具,只不过它应用于Windows CE系统。CE Process Explorer通过Platform Manager和Windows CE device建立连接,正如其名字所提示的,和Windows CE的Remote File Viewer一样,CE Process Explorer是一个Remote tool。其host端运行在PC上,通过TCP/IP等传输介质和device端通信,来揭示Windows CE的运行时系统状态。和Mark的Process Explorer侧重点不同的是,CE Process Explorer是为WinCE平台的开发人员设计的,更侧重于揭示系统的内部数据。
支持平台
目前CE Process Explorer支持ARM和X86(包括emulator)架构,MIPS和SH4架构我没用过,暂时不能支持。支持的目标操作系统包括Windows CE 4.x/5.0,对Windows CE 6.0的支持正在考虑中。
界面介绍
如下图所示,类似于Process Explorer,主界面由上下两个View组成。上面的view显示Process列表,下面的view可以显示当前所选Process的 Thread、Dll、Handle、Window、Heap或Memory信息。每个View都有对应的context menu,比如在进程view中你可以杀掉一个进程,在线程View中可以查看某个线程当前的调用栈。
1,Process View。淡蓝色背景的进程为非ROM模块。
2,Thread View。淡蓝色背景的线程为主线程。Thread View中可以看到每个thread是由哪个模块创建的,这对问题诊断是非常有帮助的。
3,Handle View。
4,DLL View。黄色背景的DLL为重定位过的DLL。
5,Window View。淡蓝色背景的窗口为顶级窗口。
5,Heap View。淡蓝色背景free内存块。
7,Memory View。在Memory View中你可以看到整个系统的虚拟内存的布局,你可以找到哪些是Image文件映射,Thread Stack、Heap在什么地方,DLL加载在哪里等等。
部分特色功能(Highlights)
1,显示线程调用栈(call stack)。这是我最喜欢的功能之一。它可以在运行时显示任意线程的调用栈,观察线程的工作状态。在有debug symbol的情况下,可以直接定位到源代码行。
2,应用程序的进程堆视图。可以让你时刻观察应用程序对堆的使用情况,红色部分为碎片。
3,定位异常地址(Crash Finder)。应用程序崩溃是常有的事,这个功能让你可以从异常产生的地址直接定位到源代码行。
Data Abort: Thread
=
87809d44 Proc
=
818a7b20 'INSTALLER
.
EXE'
AKY
=
00000401
PC
=
00012548
(
INSTALLER
.
EXE
+
0x00002548
)
RA
=
00012530
(
INSTALLER
.
EXE
+
0x0
0002530
)
BVA
=
16000000
FSR
=
00000007