tracepoint

2023-12-15 18:06:53
tracepoint的目标

  放置在代码中的tracepoint提供了一个钩子,用于调用可以在运行时提供的函数(探测)。跟踪点可以“开”(有探针连接到它)或“关”(没有连接探针)。当跟踪点处于“关闭”状态时,除了增加少量的时间penalty惩罚(检查分支的条件)和空间penalty惩罚(在检测函数的末尾为函数调用添加几个字节,并在单独的部分中添加数据结构)之外,它没有任何影响。当跟踪点处于“on”状态时,每次在调用者的执行上下文中执行跟踪点时都会调用您提供的函数。当所提供的函数结束执行时,它返回给调用者(从跟踪点站点继续)。您可以在代码中的重要位置放置跟踪点。它们是轻量级的钩子,可以传递任意数量的参数,这些参数的原型在放置在头文件中的跟踪点声明中描述。

它们可用于跟踪和性能核算。

使用tracepoint
#undef TRACE_SYSTEM
#define TRACE_SYSTEM subsys

#if !defined(_TRACE_SUBSYS_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_SUBSYS_H

#include <linux/tracepoint.h>

DECLARE_TRACE(subsys_eventname,
	TP_PROTO(int firstarg, struct task_struct *p),
	TP_ARGS(firstarg, p));

#endif /* _TRACE_SUBSYS_H */

/* This part must be outside protection */
#include <trace/define_trace.h>

In subsys/file.c (where the tracing statement must be added) :

#include <trace/events/subsys.h>

#define CR

文章来源:https://blog.csdn.net/MEIYOUDAO_JIUSHIDAO/article/details/135009132
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。