现在的位置: 首页 > 综合 > 正文

WINCE中CELOG的使用总结

2013年04月30日 ⁄ 综合 ⁄ 共 2125字 ⁄ 字号 评论关闭

CELOG的作用

WINDOWS CE5.0 内置了一套完整的事件记录机制 CELOG。用它可以方便的记录下:

l         线程和进程的状态:挂起、运行、休眠等

l         同步对象,象:CriticalSectionMutexSemaphore

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正常启动了。

 

 

OSCAPTURECELOGFLUSH的使用

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

        把这些选项或操作后,设定到注册表中,就可以只关注这些系统事件了。根据我的实际操作,即使这样,如果要写入文件的话,文件大小的增长也是很惊人的。

抱歉!评论已关闭.