Trace调测
基本概念
Trace调测旨在帮助开发者获取内核的运行流程,各个模块、任务的执行顺序,从而可以辅助开发者定位一些时序问题或者了解内核的代码运行过程。
运行机制
内核提供一套Hook框架,将Hook点预埋在各个模块的主要流程中,开发者通过注册的形式在自己所需的Hook点上注册回调函数,当内核运行至对应流程中会由内核主动调用Hook函数,将当前流程的关键数据传递给开发者。
接口说明
OpenHarmony LiteOS-M内核的Trace模块提供下面几种功能,接口详细信息可以查看API参考。
表 1 Trace模块接口说明
开发指导
开发流程
开启Trace调测的典型流程如下:
-
配置Trace模块相关宏。
需要在target_config.h头文件中修改配置:
-
选择想要注册的Hook点,实现对应的回调函数,Hook类型清单见liteos_m/utils/internal/los_hook_types.h。
-
调用LOS_HookReg进行函数注册。
编程实例
本实例实现功能:模拟运行时malloc、free不同大小的内存,记录每次malloc,free的行为及时序。
示例代码
示例代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "los_hook.h"
#define SIZE_512 512
#define SIZE_1K 1024
#define SIZE_2K 2048
/* 回调时打印malloc