模拟器运行后,就可以调试程序了。使用Evc调试和VC++很类似。可以设置断点,点击调试后就在工具栏中出现调试按钮,可以进行单步调试,查看线程和模块信息,以及捕获异常。
PB中启动模拟器后,可以使用Kerneldebugger查看系统内部信息。使用target control窗口进行内核调试。这是一个命令行模式的shell:
Welcome to the Windows CE Shell. Type ? for help.
Windows CE>
通过?命令可以查看支持的命令选项。可以查看系统进程和线程信息,内存信息,可以启动新的进程和关闭之。还可以挂起设备等。也可以在鼠标右键的弹出菜单中选择相应的项,通过特定窗口察看,比命令方便一些。在输出窗口中会显示每一个程序运行时加载的DLL库。
具体的调试情况需要在实践中不断摸索。下面我就介绍一下evc和pb中均提供的十大远程调试工具。
1.Remote File Viewer
远程文件浏览器。
这个工具类似于Windows Explorer,可以显示WinCE目标设备上的目录层次和文件。通过这个工具,可以在主机和目标机之间互传文件,也可以删除目标设备上的文件。使用这个工具,方便了程序的下载和调试。
2.Remote Process Viewer
远程进程查看工具
这 个工具可以查看WinCE上所有运行的进程以及它的现成的信息。包括进程的名称,PID,进程基本优先级,进程的线程数,进程基地址和访问键值,窗口名 称;线程ID,线程的当前进程ID(因为有的线程需要其它的进程来加载模块),线程优先级,线程访问键值;模块名称和ID,模块的进程使用计数,全局使用 计数,基地址和大小,模块的句柄和路径名称等。
在这个工具中可以看到,每个进程的地址空间是32MB,核心进程NK.exe从4000 000开始,所以系统将第0和1两个槽来加载当前进程。在WinCE4.0以前只有第0个槽。现在的第1个槽用于当前进程使用的DLL,并且保证不和其它进程使用的DLL发生冲突。
3.Remote Zoomin
这个工具可以抓取目标设备的屏幕图像,可以保存为位图文件或到剪切板上。
4.Remote Registy Editor
远程注册表编辑器
这个工具可以显示主机和目标机的注册表,可以编辑注册表或导出注册表。对于查看目标设备的驱动程序配置信息很有用。网上也有下载WinCE下的注册表编辑器。
5.Remote Heap Walker
远程堆查看器
这个工具可以列出目标机上所有运行的进程和他们的堆的使用情况。每个进程开始时,系统只提供192KB的堆,且不立刻提供物理内存。程序可以申请更大的堆。WinCE分配的堆是不能移动的,所以要频繁的分配和释放内存,最好自己预先分配一个大堆,用完后释放。
这个工具显示每个进程分配的堆ID,堆的块地址和大小以及堆的创建标志。HF32_DEFAULT表示是系统默认创建的堆。块的标志有fixed和free两种。前者表示不能释放,后者表示可以释放,这是给内存管理单元看的 。