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. |
CELZONE_HEAP 0x00000800
CELZONE_MEMTRACKING 0x00008000
CELZONE_VIRTMEM 0x00001000
CELZONE_PROCESS 0x00000040
把这些选项或操作后,设定到注册表中,就可以只关注这些系统事件了。根据我的实际操作,即使这样,如果要写入文件的话,文件大小的增长也是很惊人的。
相关文章推荐
- RSA加解密使用总结,.net私钥加密公钥解密,WinCE平台RSA加解密
- WinCE使用Unimodem进行GPRS拨号总结(By wwfiney@ARMCE)
- RSA加解密使用总结,.net私钥加密公钥解密,WinCE平台RSA加解密
- Matlab使用过程中内存不足问题的总结
- three.js morphTargets使用总结
- PHP数组使用、特性、函数的总结
- mysql触发器(Trigger)简明总结和使用实例
- otto使用总结
- AWK使用方法总结
- JS使用总结
- 使用jquery的datatables总结
- Altium Designer使用技巧总结
- Android WebView 总结 —— 使用HTML5播放视频及全屏方案
- Unity GUI(uGUI)使用心得与性能总结
- Git总结(2)—GitHub的使用&相关git命令&公钥私钥
- SQL使用(三)-----SQL优化总结
- echarts个人使用总结
- web打印实现方案 Lodop6.034 使用方法总结
- [图解]Symbian 编程总结-工具与扩展-让Symbian SDK使用最新的GCCE进行编译