http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-debug-trace.html 更多...
函数 | |
LITE_OS_SEC_BSS | SPIN_LOCK_INIT (g_traceSpin) |
STATIC_INLINE BOOL | OsTraceHwiFilter (UINT32 hwiNum) |
STATIC VOID | OsTraceSetFrame (TraceEventFrame *frame, UINT32 eventType, UINTPTR identity, const UINTPTR *params, UINT16 paramCount) |
VOID | OsTraceSetObj (ObjData *obj, const LosTaskCB *tcb) |
VOID | OsTraceHook (UINT32 eventType, UINTPTR identity, const UINTPTR *params, UINT16 paramCount) |
OsTraceHook 事件统一处理函数 更多... | |
BOOL | OsTraceIsEnable (VOID) |
STATIC VOID | OsTraceHookInstall (VOID) |
初始化事件处理函数 更多... | |
STATIC BOOL | OsTraceCmdIsValid (const TraceClientCmd *msg) |
STATIC VOID | OsTraceCmdHandle (const TraceClientCmd *msg) |
trace任务的入口函数,接收串口数据 更多... | |
VOID | TraceAgent (VOID) |
STATIC UINT32 | OsCreateTraceAgentTask (VOID) |
OsCreateTraceAgentTask 创建trace任务 更多... | |
STATIC UINT32 | OsTraceInit (VOID) |
跟踪模块初始化 更多... | |
UINT32 | LOS_TraceStart (VOID) |
启动Trace 更多... | |
VOID | LOS_TraceStop (VOID) |
停止Trace(跟踪) 更多... | |
VOID | LOS_TraceEventMaskSet (UINT32 mask) |
设置事件掩码,仅记录某些模块的事件 更多... | |
VOID | LOS_TraceRecordDump (BOOL toClient) |
输出Trace缓冲区数据 更多... | |
OfflineHead * | LOS_TraceRecordGet (VOID) |
获取Trace缓冲区的首地址 更多... | |
VOID | LOS_TraceReset (VOID) |
清除Trace缓冲区中的事件 更多... | |
VOID | LOS_TraceHwiFilterHookReg (TRACE_HWI_FILTER_HOOK hook) |
注册过滤特定中断号事件的钩子函数 更多... | |
LITE_OS_SEC_TEXT_MINOR UINT32 | OsShellCmdTraceSetMask (INT32 argc, const CHAR **argv) |
通过shell命令 设置事件掩码,仅记录某些模块的事件 更多... | |
LITE_OS_SEC_TEXT_MINOR UINT32 | OsShellCmdTraceDump (INT32 argc, const CHAR **argv) |
SHELLCMD_ENTRY (tracestart_shellcmd, CMD_TYPE_EX, "trace_start", 0,(CmdCallBackFunc) LOS_TraceStart) | |
SHELLCMD_ENTRY (tracestop_shellcmd, CMD_TYPE_EX, "trace_stop", 0,(CmdCallBackFunc) LOS_TraceStop) | |
SHELLCMD_ENTRY (tracesetmask_shellcmd, CMD_TYPE_EX, "trace_mask", 1,(CmdCallBackFunc) OsShellCmdTraceSetMask) | |
SHELLCMD_ENTRY (tracereset_shellcmd, CMD_TYPE_EX, "trace_reset", 0,(CmdCallBackFunc) LOS_TraceReset) | |
SHELLCMD_ENTRY (tracedump_shellcmd, CMD_TYPE_EX, "trace_dump", 1,(CmdCallBackFunc) OsShellCmdTraceDump) | |
LOS_MODULE_INIT (OsTraceInit, LOS_INIT_LEVEL_KMOD_EXTENDED) | |
变量 | |
LITE_OS_SEC_BSS STATIC UINT32 | g_traceEventCount |
LITE_OS_SEC_BSS STATIC enum TraceState | g_traceState = TRACE_UNINIT |
LITE_OS_SEC_DATA_INIT STATIC volatile BOOL | g_enableTrace = FALSE |
trace开关 更多... | |
LITE_OS_SEC_BSS STATIC UINT32 | g_traceMask = TRACE_DEFAULT_MASK |
全局变量设置事件掩码,仅记录某些模块的事件 更多... | |
TRACE_EVENT_HOOK | g_traceEventHook = NULL |
事件钩子函数 更多... | |
TRACE_DUMP_HOOK | g_traceDumpHook = NULL |
输出缓冲区数据 更多... | |
LITE_OS_SEC_BSS STATIC UINT32 | g_traceTaskId |
LITE_OS_SEC_BSS STATIC TRACE_HWI_FILTER_HOOK | g_traceHwiFilterHook = NULL |
用于跟踪硬中断过滤的钩子函数 更多... | |
http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-debug-trace.html
基本概念 Trace调测旨在帮助开发者获取内核的运行流程,各个模块、任务的执行顺序,从而可以辅助开发者定位一些时序问题 或者了解内核的代码运行过程。 相关宏 LOSCFG_KERNEL_TRACE Trace模块的裁剪开关 YES/NO LOSCFG_RECORDER_MODE_OFFLINE Trace工作模式为离线模式 YES/NO LOSCFG_RECORDER_MODE_ONLINE Trace工作模式为在线模式 YES/NO LOSCFG_TRACE_CLIENT_INTERACT 使能与Trace IDE (dev tools)的交互,包括数据可视化和流程控制 YES/NO LOSCFG_TRACE_FRAME_CORE_MSG 记录CPUID、中断状态、锁任务状态 YES/NO LOSCFG_TRACE_FRAME_EVENT_COUNT 记录事件的次序编号 YES/NO LOSCFG_TRACE_FRAME_MAX_PARAMS 配置记录事件的最大参数个数 INT LOSCFG_TRACE_BUFFER_SIZE 配置Trace的缓冲区大小 INT 运行机制 内核提供一套Hook框架,将Hook点预埋在各个模块的主要流程中, 在内核启动初期完成Trace功能的初始化, 并注册Trace的处理函数到Hook中。 当系统触发到一个Hook点时,Trace模块会对输入信息进行封装,添加Trace帧头信息,包含事件类型、 运行的cpuid、运行的任务id、运行的相对时间戳等信息; Trace提供2种工作模式,离线模式和在线模式。 在线模式需要配合IDE使用,实时将trace frame记录发送给IDE,IDE端进行解析并可视化展示。 离线模式会将trace frame记录到预先申请好的循环buffer中。如果循环buffer记录的frame过多则可能出现翻转, 会覆盖之前的记录,故保持记录的信息始终是最新的信息。Trace循环buffer的数据可以通过shell命令导出进行详细分析, 导出信息已按照时间戳信息完成排序。
在文件 los_trace.c 中定义.
LOS_MODULE_INIT | ( | OsTraceInit | , |
LOS_INIT_LEVEL_KMOD_EXTENDED | |||
) |
STATIC UINT32 OsCreateTraceAgentTask | ( | VOID | ) |
OsCreateTraceAgentTask 创建trace任务
在文件 los_trace.c 第 281 行定义.
通过shell命令 设置事件掩码,仅记录某些模块的事件
在文件 los_trace.c 第 438 行定义.
STATIC VOID OsTraceCmdHandle | ( | const TraceClientCmd * | msg | ) |
STATIC BOOL OsTraceCmdIsValid | ( | const TraceClientCmd * | msg | ) |
OsTraceHook
事件统一处理函数
eventType | |
identity | |
paramCount | |
params |
在文件 los_trace.c 第 188 行定义.
STATIC VOID OsTraceHookInstall | ( | VOID | ) |
初始化事件处理函数
在文件 los_trace.c 第 220 行定义.
在文件 los_trace.c 第 107 行定义.
STATIC UINT32 OsTraceInit | ( | VOID | ) |
跟踪模块初始化
在文件 los_trace.c 第 299 行定义.
BOOL OsTraceIsEnable | ( | VOID | ) |
STATIC VOID OsTraceSetFrame | ( | TraceEventFrame * | frame, |
UINT32 | eventType, | ||
UINTPTR | identity, | ||
const UINTPTR * | params, | ||
UINT16 | paramCount | ||
) |
在文件 los_trace.c 第 119 行定义.
在文件 los_trace.c 第 161 行定义.
SHELLCMD_ENTRY | ( | tracedump_shellcmd | , |
CMD_TYPE_EX | , | ||
"trace_dump" | , | ||
1 | , | ||
(CmdCallBackFunc) | OsShellCmdTraceDump | ||
) |
SHELLCMD_ENTRY | ( | tracereset_shellcmd | , |
CMD_TYPE_EX | , | ||
"trace_reset" | , | ||
0 | , | ||
(CmdCallBackFunc) | LOS_TraceReset | ||
) |
SHELLCMD_ENTRY | ( | tracesetmask_shellcmd | , |
CMD_TYPE_EX | , | ||
"trace_mask" | , | ||
1 | , | ||
(CmdCallBackFunc) | OsShellCmdTraceSetMask | ||
) |
SHELLCMD_ENTRY | ( | tracestart_shellcmd | , |
CMD_TYPE_EX | , | ||
"trace_start" | , | ||
0 | , | ||
(CmdCallBackFunc) | LOS_TraceStart | ||
) |
SHELLCMD_ENTRY | ( | tracestop_shellcmd | , |
CMD_TYPE_EX | , | ||
"trace_stop" | , | ||
0 | , | ||
(CmdCallBackFunc) | LOS_TraceStop | ||
) |
LITE_OS_SEC_BSS SPIN_LOCK_INIT | ( | g_traceSpin | ) |
VOID TraceAgent | ( | VOID | ) |
在文件 los_trace.c 第 259 行定义.
LITE_OS_SEC_DATA_INIT STATIC volatile BOOL g_enableTrace = FALSE |
trace开关
在文件 los_trace.c 第 88 行定义.
TRACE_DUMP_HOOK g_traceDumpHook = NULL |
输出缓冲区数据
在文件 los_trace.c 第 92 行定义.
LITE_OS_SEC_BSS STATIC UINT32 g_traceEventCount |
在文件 los_trace.c 第 86 行定义.
TRACE_EVENT_HOOK g_traceEventHook = NULL |
事件钩子函数
在文件 los_trace.c 第 91 行定义.
LITE_OS_SEC_BSS STATIC TRACE_HWI_FILTER_HOOK g_traceHwiFilterHook = NULL |
用于跟踪硬中断过滤的钩子函数
在文件 los_trace.c 第 101 行定义.
LITE_OS_SEC_BSS STATIC UINT32 g_traceMask = TRACE_DEFAULT_MASK |
全局变量设置事件掩码,仅记录某些模块的事件
在文件 los_trace.c 第 89 行定义.
LITE_OS_SEC_BSS STATIC enum TraceState g_traceState = TRACE_UNINIT |
在文件 los_trace.c 第 87 行定义.
LITE_OS_SEC_BSS STATIC UINT32 g_traceTaskId |
在文件 los_trace.c 第 95 行定义.