使用ftrace调试linux内核,第2部分.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用 ftrace 调试 Linux 内核,第 2 部分 ftrace 操作概述使用 ftrace 提供的跟踪器来调试或者 分析内核时需要如下操作: 切换到目录 /sys/kernel/debug/tracing/ 下 查看 available_tracers 文件,获取当前内核支持的跟踪器列 表 关闭 ftrace 跟踪,即将 0 写入文件 tracing_enabled 激活 ftrace_enabled ,否则 function 跟踪器的行为类似于 nop;另外,激活该选项还可以让一些跟踪器比如 irqsoff获 取更丰富的信息。建议使用 ftrace 时将其激活。要激活 ftrace_enabled ,可以通过 proc 文件系统接口来设置: echo 1 /proc/sys/kernel/ftrace_enabled 将所选择的跟踪器的名字写入文件 current_tracer 将要跟踪的函数写入文件 set_ftrace_filter ,将不希望跟踪的 函数写入文件 set_ftrace_notrace。通常直接操作文件 set_ftrace_filter 就可以了 激活ftrace跟踪,即将1写入文件tracing_enabled。还要 确保文件 tracing_on 的值也为 1 ,该文件可以控制跟踪的暂 停 如果是对应用程序进行分析的话,启动应用程序的执行, ftrace 会跟踪应用程序运行期间内核的运作情况 通过将 0 写入文件 tracing_on 来暂停跟踪信息的记录,此 时跟踪器还在跟踪内核的运行,只是不再向文件 trace 中写 入跟踪信息;或者将 0 写入文件 tracing_enabled 来关闭跟 踪 查看文件 trace 获取跟踪信息,对内核的运行进行分析调试 接下来将对跟踪器的使用以及跟踪信息的格式通过实例加 以讲解。 回页首 fucntion 跟踪器 function 跟踪器可以跟踪内 核函数的调用情况,可用于调试或者分析 bug ,还可用于 了解和观察 Linux 内核的执行过程。清单 1 给出了使用 function 跟踪器的示例。清单 1. function 跟踪器使用示例 [root@linux tracing]# pwd /sys/kernel/debug/tracing [root@linux tracing]# echo 0 tracing_enabled [root@linux tracing]# echo 1 /proc/sys/kernel/ftrace_enabled [root@linux tracing]# echo function current_tracer [root@linux tracing]# echo 1 tracing_on [root@linux tracing]# echo 1 tracing_enabled # 让内核运行一段时间,这样 ftrace 可以收集一些跟踪信 息,之后再停止跟踪 [root@linux tracing]# echo 0 tracing_enabled [root@linux tracing]# cat trace | head -10 # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | -0 [000] 20654.426521: _raw_spin_lock -scheduler_tick -0 [000] 20654.426522: task_tick_idle -scheduler_tick -0 [000] 20654.426522: cpumask_weight -scheduler_tick -0 [000] 20654.426523: cpumask_weight -scheduler_tick -0 [000] 20654.426523: run_posix_cpu_timers -update_process_times -0 [000] 20654.426524: hrtimer_forward trace 文件给出的信 息格式很清晰。首先,字段“ tracer:”给出了当前所使用的 跟踪器的名字, 这里为 function 跟踪器。 然后是跟踪信息记 录的格式, TASK 字段对应任务的名字, PID 字段则给出了 任务的进程 ID ,字段 CPU# 表示运行被跟踪函数的 CPU 号,这里可以看到 idle 进程运行在 0 号 CPU 上,其进程 ID 是 0 ;字段 TIMESTAMP 是时间戳,其格式为“ 表示执行该函数时对应的时间戳; FUNCTION 一列则给出 了被跟踪的函数,函数的

文档评论(0)

ld555666 + 关注
实名认证
内容提供者

小小鹏鹏

1亿VIP精品文档

相关文档