0 前言
以往测试的log都是直接从trace导出,但是最近发现trace中能导出的数据是有限的,如果测试的时间过长,新的数据就会把之前的数据全部覆盖,并且对于长时间的测试,直接导出trace的内容也会造成查找效率低下的问题。因此熟练的使用Logging功能还是很有必要的。
1 函数介绍
、CAPL代码很简单,一共三个函数,结构如下所示:
setLogFileName("StressTest","..\\TestLogging\\Flash100");startLogging("StressTest");/*需要记录的过程放在这里*/stopLogging("StressTest");
setLogFileName:
setLogFileName(char fileName[]); // form 1
setLogFileName(char strLoggingBlockName[], char fileName[]); // form 2
fileName:名称可以是绝对路径、单个文件名或相对路径。如果提供了绝对路径或相对路径,则将创建该路径的所有非现有目录。如果提供了单个文件名,则日志记录文件将放置在当前配置的目录中,如果提供了相对路径,则将放置在与配置文件相关的路径中。路径的目录必须用反斜杠 (\\) 分隔。文件名可以包含文件扩展名。如果未输入扩展名,则将自动设置上次使用的文件类型。如果给定了无效的扩展名,则该函数将不执行任何操作。
strLoggingBlockName:Logging Block的名字,后续在TIPS中有具体讲解。
startLogging:
void startLogging(); // from 1
void startLogging(char strLoggingBlockName[]); // from 2
void startLogging(char strLoggingBlockName[], long preTriggerTime); // from 3
如果是格式1,那就是开启所有的Logging Block进行录制。
格式2,就是开启你想开启的LoggingBlock进行录制,比如你有很多个LoggingBlock,有的录制Flash,有的录制诊断,这时候你就可以选择开启哪个LoggingBlock进行录制,
格式3,就是在格式2的基础上,设定提前trigger前多久开始录制,时间单位为ms。
stopLogging:
void stopLogging(); // from 1
void stopLogging(char strLoggingBlockName[]); // from 2
void stopLogging(char strLoggingBlockName[], long postTriggerTime); // from 3
与startLogging:基本一致就不做过多介绍了
TIPS:
1.对于新手来说,首先需要注意的是,measurement中的Logging功能需要打开,不然是无法记录的:
2.在默认设置下,所有的log会被保存在同一个文件中:
如果想要是做压力测试,想要分段保存每一次的Log便于后期排查,可以将文件名称改成按trigger次数增加,这样文件就是按照次数依次分开:
3. 函数内容与文件名的相对应关系如下所示(因涉及项目,部分内容将隐去)
4.如果是通过capl来控制记录的话,logging存储的地址需要在CAPL函数中进行更改而不是在measurement中更改。
5. 该trigger模式下,只要测量一开始就会开始记录,因此想用capl控制的话这里需要注意模式调整。