导读 大家好,小宜来为大家讲解下。cdlinux官网,CdLinux这个很多人还不知道,现在让我们一起来看看吧!实时获取linux内核函数的调用栈以及各个子...

大家好,小宜来为大家讲解下。cdlinux官网,CdLinux这个很多人还不知道,现在让我们一起来看看吧!

实时获取linux内核函数的调用栈以及各个子函数的执行时间,linux ftrace是最适合的。通过ftrace进行linux内核调试的步骤如下:

1、进入debugfs目录

$ cd /sys/kernel/debug/tracing

如果找不到目录,执行下列命令挂载debugfs:

$ mount -t debugfs nodev /sys/kernel/debug

2、查询支持的追踪器

$ cat available_tracers

常用的有两种:

- function 表示跟踪函数的执行;

- function_graph 则是跟踪函数的调用关系;

3、查看支持追踪的内核函数和事件。其中函数就是内核中的函数名,而事件,则是内核源码中预先定义的跟踪点。

//查看内核函数

$ cat available_filter_functions

//查看事件

$ cat available_events

4、设置追踪函数:

$ echo do_sys_open > set_graph_function

5、设置追踪器

$ echo function_graph > current_tracer

$ echo funcgraph-proc > trace_options

6、开启追踪

$ echo 1 > tracing_on

7、执行一个 ls 命令后,再关闭跟踪

$ ls

$ echo 0 > tracing_on

8、最后一步,查看跟踪结果

$ cat trace

不过ftrace使用起来操作步骤稍微有点繁琐,作为ftrace的改良版,trace-cmd使用起来更方便些,过程如下:

1、记录:

$ trace-cmd record -p function_graph -g do_sys_open -O funcgraph-proc ls

2、trace-cmd的输出和ftrace是类似的:

$ trace-cmd report

#linux# #程序员# #运维# #Linux# #计算机# #操作系统#

本文cdlinux官网,CdLinux到此分享完毕,希望对大家有所帮助。