随笔分类 - Tracing
摘要:# tracer: nop # # entries-in-buffer/entries-written: 30624/30624 #P:4 # # _ > irqs-off # / _ > need-resched # | / _ > hardirq/softirq # || / _ > preem
阅读全文
摘要:要获取 ftrace events(函数跟踪事件),你可以通过以下几种方式来查看和使用它们: ✅ 方法一:查看当前系统支持的 ftrace events 你可以通过以下命令查看系统中所有可用的 ftrace 事件: cat /sys/kernel/debug/tracing/available_ev
阅读全文
摘要:内联函数(inline functions)通常是由编译器在编译时将函数的代码直接插入到每个调用点,而不是通过函数调用的方式执行。这意味着内联函数的代码在编译后不会像普通函数那样有一个单独的入口地址。因此,当使用像ftrace这样的基于函数入口点的跟踪工具时,内联函数就无法被直接跟踪,因为它们没有可
阅读全文
摘要:/sys/kernel/debug/tracing/options/irq_info 是 ftrace 中的一个选项,用于启用或禁用有关中断的详细信息的跟踪。 options/irq_info 的具体作用: 1. 启用 IRQ 信息跟踪: 当启用 irq_info 时,ftrace 将捕获与中断相关
阅读全文
摘要:内核由于共享内存地址空间,如果没有合适的工具,很多踩内存的问题即使复现,也无法快速定位; 在新的内核版本中引入了一个新工具hardware breakpoint,其能够监视对指定的地址的特定类型(读/写)的数据访问,有利于该类问题的定位; 以下是一个使用该工具的例子(来自内核代码linux-3.10
阅读全文
摘要:要使用内核的硬件断点(hardware breakpoint)来定位内核模块中的内存访问问题,你可以通过以下步骤进行设置和调试。 1. 确定要监控的内存地址 首先,你需要确定你想要监控的内存地址。这可以是某个变量的地址或者某个内存区域的开始地址。内核模块的内存访问问题通常涉及访问越界、未初始化的指针
阅读全文
摘要:ftrace 中的 trace_options 选项用于控制追踪数据的收集和显示方式。你可以通过 /sys/kernel/debug/tracing/trace_options 文件来设置这些选项。每个选项代表了不同的追踪行为或输出格式。以下是一些常见的 trace_options 选项及其含义:
阅读全文
摘要:你一定在kernel source code中看过很多pr_debug()/dev_dbg()/print_hex_dump_debug()吧,这些debug语句提供更多的信息帮助我们了解内核运行流程或是定位问题,可以在运行时按per-callsite单独开启/关闭。那我们来看一下它是如何实现和使用
阅读全文
摘要:查找Kernel启动阶段的延时原因 1.确保内核配置了如下选项 CONFIG_FTRACE: "Tracers" CONFIG_FUNCTION_TRACER: "Kernel Function Tracer" CONFIG_FUNCTION_GRAPH_TRACER: "Kernel Functi
阅读全文
摘要:1 前言 本文为 Ftrace 系列文章第二篇,描述 Ftrace 进阶用法。上一篇文章中我们接触到了 Ftrace 基本概念,知道了如何 trace 一个函数,知道了如何 enable 一个 trace event。 同时,上一篇文章也遗留了几个问题: 如何跟踪某个进程?如何跟踪一个命令,但是这个
阅读全文
摘要:启动阶段使能event trace 同上,配置commandline: trace_event=sched:*,workqueue:*,irq:*,power:cpu_frequency_limits,power:cpu_frequency,power:cpu_idle,thermal:* trac
阅读全文
摘要:简介 高通 ramdump 可以解析出 ftrace,方便用于追踪 快省稳 问题。 kernelshark 是一个可以查看 trace event 的图形化工具,方便梳理和观察内核微观行为。 trace-cmd 是设置读取 ftrace 的命令行工具,kernelshark既可以记录数据,也可以图形
阅读全文
摘要:在 perf 工具生成的火焰图中看到 [kernel.kallsyms],通常意味着火焰图中包含内核符号,但这些符号没有被正确解析。这可能是由于以下几个原因导致的: 内核符号表不可用或不完整:perf 工具需要内核的符号表来解析这些符号。如果内核符号表不可用或不完整,可能会出现 [kernel.ka
阅读全文
摘要:在 Android 代码中增加 Atrace 跟踪,可以使用 Android 提供的 android.os.Trace 类。这允许你在应用代码中手动添加自定义的跟踪点,以捕获特定代码段的执行情况。以下是如何在 Android 代码中增加 Atrace 跟踪的步骤: 导入 android.os.Tra
阅读全文
摘要:目录Trace32 Simulator debugTrace32工具配置Trace32命令简介memory class常见命令索引v.v使用实例不同CPU运行信息查看 Trace32 Simulator debug 熟悉高通平台的童鞋可能会比较熟悉,高通有ramdump功能,当系统crash后通过w
阅读全文
摘要:profile是用于追踪程序执行调用流程的工具,类似于perf中的-g指令 相比perf -g而言,profile功能化更加细分,可以根据需要选择追踪层面,例如-U(用户要调用流程) -K (内核态调用流程) 下面具体介绍该工具的使用 采用profile --help,我们可以看到如下介绍: usa
阅读全文
摘要:引入tracepoint的背景 当需要获取内核的debug信息时,通常你会通过以下printk的方式打印信息: void trace_func() { //…… printk("输出信息"); //…… } 缺点: 内核中printk是统一控制的,各个模块的printk都会被打印,无法只打印需要关注
阅读全文
摘要:kprobe是什么? kprobe 是一种动态调试机制,用于debugging,动态跟踪,性能分析,动态修改内核行为等,2004年由IBM发布,是名为Dprobes工具集的底层实现机制[1][2],2005年合入Linux kernel。probe的含义是像一个探针,可以不修改分析对象源码的情况下,
阅读全文
摘要:Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存。现代Linux内核部署了该缓存分配器以持有缓存,称之为片。不同类型的片缓存由片分配器维护。本文集中讨论slabtop命令,该命令显示了实时内核片缓存信息。 1.命令用法: 该命令用起来很简单,默认执行时
阅读全文
摘要:kmemleak 和kasan 都是 Linux 内核中的一些工具和特性,用于帮助进行内存错误检测和修复。然而,它们之间有一些区别: 功能:kmemleak 用于检测内核中未释放的内存泄漏,它可以跟踪内核中分配的内存块,并在系统运行时检查未释放的内存。kasan(内核地址Sanitizer)是一个内
阅读全文


浙公网安备 33010602011771号