c 语言使用lttng
2021-01-19 20:12
标签:include macro quit prope comm users gcc 追踪 line 以下内容来自lttng 官方文档,主要是学习记录 对于构建我们需要安装devel包,这个通过efficios提供的yum包就包含了 https://lttng.org/docs/v2.12/#doc-tracing-your-own-user-application c 语言使用lttng 标签:include macro quit prope comm users gcc 追踪 line 原文地址:https://www.cnblogs.com/rongfengliang/p/12905940.html创建tracepoint
#undef TRACEPOINT_PROVIDER
#define TRACEPOINT_PROVIDER hello_world
?
#undef TRACEPOINT_INCLUDE
#define TRACEPOINT_INCLUDE "./hello-tp.h"
?
#if !defined(_HELLO_TP_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
#define _HELLO_TP_H
?
#include
?
TRACEPOINT_EVENT(
hello_world,
my_first_tracepoint,
TP_ARGS(
int, my_integer_arg,
char*, my_string_arg
),
TP_FIELDS(
ctf_string(my_string_field, my_string_arg)
ctf_integer(int, my_integer_field, my_integer_arg)
)
)
?
#endif /* _HELLO_TP_H */
?
#include
#define TRACEPOINT_CREATE_PROBES
#define TRACEPOINT_DEFINE
?
#include "hello-tp.h"
gcc -c -I. hello-tp.c
hello.c#include
#include "hello-tp.h"
?
int main(int argc, char *argv[])
{
int x;
?
puts("Hello, World!\nPress Enter to continue...");
?
/*
* The following getchar() call is only placed here for the purpose
* of this demonstration, to pause the application in order for
* you to have time to list its tracepoints. It‘s not needed
* otherwise.
*/
getchar();
?
/*
* A tracepoint() call.
*
* Arguments, as defined in hello-tp.h:
*
* 1. Tracepoint provider name (required)
* 2. Tracepoint name (required)
* 3. my_integer_arg (first user-defined argument)
* 4. my_string_arg (second user-defined argument)
*
* Notice the tracepoint provider and tracepoint names are
* NOT strings: they are in fact parts of variables that the
* macros in hello-tp.h create.
*/
tracepoint(hello_world, my_first_tracepoint, 23, "hi there!");
?
for (x = 0; x argc; ++x) {
tracepoint(hello_world, my_first_tracepoint, x, argv[x]);
}
?
puts("Quitting now!");
tracepoint(hello_world, my_first_tracepoint, x * x, "x^2");
?
return 0;
}
gcc -c hello.c
gcc -o hello hello.o hello-tp.o -llttng-ust -ldl
追踪应用
./hello world and beyond
lttng-sessiond --daemonize
lttng list --userspace
lttng create my-user-space-session
lttng enable-event --userspace hello_world:my_first_tracepoint
lttng start
输入enter,停止应用lttng destroy
babeltrace ~/lttng-traces/my-user-space-session*
说明
参考资料