您的位置:首页 > 其它

WINCE中CELOG的使用总结

2009-02-24 14:32 295 查看

CELOG的作用

WINDOWS CE5.0 内置了一套完整的事件记录机制 CELOG。用它可以方便的记录下:
l 线程和进程的状态:挂起、运行、休眠等
l 同步对象,象:CriticalSection、Mutex、Semaphore、
l 系统事件:TLB 事件、页表错、优先级倒转
l 系统中断
l 内存操作情况,比如:HEAP、虚存操作等

在WINDOWS CE提供的工具里面,与之对应的工具和程序有:
l Remote Kernel Tracker
l OsCapture
l CelogFlush
l Readlog

CELOG这个基础设施的优点是:可以记录系统的各种事件和内存数据,便于进行分析,对于查找系统隐藏很深的逻辑错误或者内存问题,都是非常有帮助的。但是,随之而来的就是CELOG启动后,会严重影响系统性能,导致系统的速度变慢。因此,在问题解决后还是最好把它从内核编译中拿出来较好!

CELOG的添加

在 Platform builder 中的Build Option中增加:
l Enable Event Tracking During Boot (IMGCELOGENABLE=1) 目的是把CELOG加到内核中去。

l Flush tracked events to Release Directory (IMGAUTOFLUSH=1) 实际上是增加了CeLogFlush.exe 这个应用。从而能够自动的将CELog记录的事件写入到指定的内存或者外部存储中去。
l Buffer tracked events in RAM (IMGOSCAPTURE=1)
这个选项是增加OSCapture.exe这个应用。 可以根据命令来把相关的事件写入到指定的存储中。
重新编译内核,就可以把CELOG正常启动了。

OSCAPTURE和CELOGFLUSH的使用

OSCAPTURE只是将数据放入到系统的内存中,只有手动FLUSH才会写入文件,而CELOGFLUSH则是自动存储的。CELOGFLUSH如果写入的东西非常多,或者非常频繁,那么很快存储就会被写满,所以使用CELOGFLUSH要小心。

这两个工具都通过注册表项来控制其基本动作。

主目录:HKEY_LOCAL_MACHINE/System/CeLog
目录项
Value: type
Default
Description
BufferSize: REG_DWORD
0x00020000 = 131072, or 128KB
Specifies the size, in bytes, of the CeLog RAM buffer that stores event activity before flushing.
FileName: REG_SZ
/Release/celog.clg
Name of log file to store the data in.
FlushTimeout: REG_DWORD
0x00002710 = 10000, or 10 seconds
Sets the timeout, in milliseconds, between successive flushes.
ThreadPriority: REG_DWORD
0x000000F8 = 248, the lowest real-time priority
Sets the priority of the flushing thread (0-255).
Transport: REG_SZ
LocalFile
Transport to use. This value must be one of the following:
· LocalFile
Stores data in log file on the local file system
· CESH
Stores data in log file on the remote host at /Release/LocalFile
ZoneCE: REG_DWORD
Previous zone setting
Specifies the CeLog zone settings.
If this value is present, CeLogFlush will call CeLogSetZones to pass the zones to CeLog.
其中“ZoneCE”用来控制系统到底要监控哪些事件,详细参数可以查看WINDOWS CE的帮助。如下例:
CELZONE_HEAP 0x00000800
CELZONE_MEMTRACKING 0x00008000
CELZONE_VIRTMEM 0x00001000
CELZONE_PROCESS 0x00000040
把这些选项或操作后,设定到注册表中,就可以只关注这些系统事件了。根据我的实际操作,即使这样,如果要写入文件的话,文件大小的增长也是很惊人的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: