Fork me on GitHub

随笔分类 -  Tracing

摘要:内核由于共享内存地址空间,如果没有合适的工具,很多踩内存的问题即使复现,也无法快速定位; 在新的内核版本中引入了一个新工具hardware breakpoint,其能够监视对指定的地址的特定类型(读/写)的数据访问,有利于该类问题的定位; 以下是一个使用该工具的例子(来自内核代码linux-3.10 阅读全文
posted @ 2024-08-28 20:10 yooooooo 阅读(184) 评论(0) 推荐(0) 编辑
摘要:要使用内核的硬件断点(hardware breakpoint)来定位内核模块中的内存访问问题,你可以通过以下步骤进行设置和调试。 1. 确定要监控的内存地址 首先,你需要确定你想要监控的内存地址。这可以是某个变量的地址或者某个内存区域的开始地址。内核模块的内存访问问题通常涉及访问越界、未初始化的指针 阅读全文
posted @ 2024-08-27 20:52 yooooooo 阅读(204) 评论(0) 推荐(0) 编辑
摘要:你一定在kernel source code中看过很多pr_debug()/dev_dbg()/print_hex_dump_debug()吧,这些debug语句提供更多的信息帮助我们了解内核运行流程或是定位问题,可以在运行时按per-callsite单独开启/关闭。那我们来看一下它是如何实现和使用 阅读全文
posted @ 2024-08-08 16:47 yooooooo 阅读(192) 评论(0) 推荐(0) 编辑
摘要:在 perf 工具生成的火焰图中看到 [kernel.kallsyms],通常意味着火焰图中包含内核符号,但这些符号没有被正确解析。这可能是由于以下几个原因导致的: 内核符号表不可用或不完整:perf 工具需要内核的符号表来解析这些符号。如果内核符号表不可用或不完整,可能会出现 [kernel.ka 阅读全文
posted @ 2024-07-10 11:51 yooooooo 阅读(361) 评论(0) 推荐(0) 编辑
摘要:在 Android 代码中增加 Atrace 跟踪,可以使用 Android 提供的 android.os.Trace 类。这允许你在应用代码中手动添加自定义的跟踪点,以捕获特定代码段的执行情况。以下是如何在 Android 代码中增加 Atrace 跟踪的步骤: 导入 android.os.Tra 阅读全文
posted @ 2024-07-02 21:36 yooooooo 阅读(704) 评论(0) 推荐(0) 编辑
摘要:目录Trace32 Simulator debugTrace32工具配置Trace32命令简介memory class常见命令索引v.v使用实例不同CPU运行信息查看 Trace32 Simulator debug 熟悉高通平台的童鞋可能会比较熟悉,高通有ramdump功能,当系统crash后通过w 阅读全文
posted @ 2024-06-23 14:52 yooooooo 阅读(994) 评论(0) 推荐(0) 编辑
摘要:profile是用于追踪程序执行调用流程的工具,类似于perf中的-g指令 相比perf -g而言,profile功能化更加细分,可以根据需要选择追踪层面,例如-U(用户要调用流程) -K (内核态调用流程) 下面具体介绍该工具的使用 采用profile --help,我们可以看到如下介绍: usa 阅读全文
posted @ 2024-04-07 11:17 yooooooo 阅读(105) 评论(0) 推荐(0) 编辑
摘要:引入tracepoint的背景 当需要获取内核的debug信息时,通常你会通过以下printk的方式打印信息: void trace_func() { //…… printk("输出信息"); //…… } 缺点: 内核中printk是统一控制的,各个模块的printk都会被打印,无法只打印需要关注 阅读全文
posted @ 2024-04-03 17:50 yooooooo 阅读(362) 评论(0) 推荐(0) 编辑
摘要:kprobe是什么? kprobe 是一种动态调试机制,用于debugging,动态跟踪,性能分析,动态修改内核行为等,2004年由IBM发布,是名为Dprobes工具集的底层实现机制[1][2],2005年合入Linux kernel。probe的含义是像一个探针,可以不修改分析对象源码的情况下, 阅读全文
posted @ 2024-04-02 15:04 yooooooo 阅读(436) 评论(0) 推荐(0) 编辑
摘要:Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存。现代Linux内核部署了该缓存分配器以持有缓存,称之为片。不同类型的片缓存由片分配器维护。本文集中讨论slabtop命令,该命令显示了实时内核片缓存信息。 1.命令用法: 该命令用起来很简单,默认执行时 阅读全文
posted @ 2023-11-10 11:46 yooooooo 阅读(360) 评论(0) 推荐(1) 编辑
摘要:kmemleak 和kasan 都是 Linux 内核中的一些工具和特性,用于帮助进行内存错误检测和修复。然而,它们之间有一些区别: 功能:kmemleak 用于检测内核中未释放的内存泄漏,它可以跟踪内核中分配的内存块,并在系统运行时检查未释放的内存。kasan(内核地址Sanitizer)是一个内 阅读全文
posted @ 2023-11-07 11:12 yooooooo 阅读(158) 评论(0) 推荐(0) 编辑
摘要:1 图 1 Linux profiling 手段一览 软件埋点: 手动埋点:主动调用 trace 函数来实现埋点。 Android systrace 即是这样一个例子,如图 2 和 图 3 所示 自动埋点:借助工具链,自动埋点,对函数的 entry 和 return 进行 hook。 Linux f 阅读全文
posted @ 2023-10-09 23:13 yooooooo 阅读(319) 评论(0) 推荐(1) 编辑
摘要:Linux内核的tracing buffer是一种用于存储内核跟踪数据的特殊缓冲区。它用于记录内核中发生的事件和活动,以帮助开发人员进行性能分析和故障排查。该缓冲区可以在内核运行时启用,并且可以通过特定的跟踪工具和API进行访问和分析。跟踪缓冲区可以包含一系列事件和数据,如函数调用、中断、系统调用、 阅读全文
posted @ 2023-10-09 22:37 yooooooo 阅读(48) 评论(0) 推荐(0) 编辑
摘要:``` uprobe是linux内核提供的一种trace用户态函数的机制 可以在不对二进制重新编译的情况下进行trace特定函数 本文描述了uprobe的基本使用方法 ``` ## 使用方法 - 官方的指引是这样的, 详细的可以看kernel代码中的文档Documentation/trace/upr 阅读全文
posted @ 2023-05-31 14:43 yooooooo 阅读(1684) 评论(0) 推荐(1) 编辑
摘要:本章的我们来学习uprobe ,顾名思义,相对于内核函数/地址的监控,主要用于用户态函数/地址的监控。听起来是不是有点神奇,内核怎么监控用户态函数的调用呢?本章的内容包括: 如何使用uprobe 内核是如何通过uprobe监控用户态的调用,其原理是如何的 1 如何使用uprobe 站在用户视角,我们 阅读全文
posted @ 2023-05-04 17:52 yooooooo 阅读(331) 评论(0) 推荐(0) 编辑
摘要:前言 上一篇《systemtap从入门到放弃(一)》我们知道了什么是systemtap,以及如何书写简单的systemtap脚本。本篇承接上文,介绍systemtap的安装和简易场景应用,通过几个小例子掌握systemtap在内核开发调试中的简单使用。 安装systemtap 在linux发行版上安 阅读全文
posted @ 2023-01-04 10:04 yooooooo 阅读(284) 评论(0) 推荐(0) 编辑
摘要:前言 内核开发从业者,都知道一个代码调试"大杀器":printk !除此之外大家依据自己的习惯,还经常用一些诸如kdump这类的复杂工具。对于systemtap,有人可能熟悉有人可能没听过,本文从入门层次简介systemtap的原理和安装使用,分为两篇,本篇主要介绍原理和脚本语法。文章冗长,多处包含 阅读全文
posted @ 2022-12-31 09:46 yooooooo 阅读(602) 评论(1) 推荐(0) 编辑
摘要:perf top 用于实时显示当前系统的性能统计信息。该命令主要用来观察整个系统当前的状态,比如可以通过查看该命令的输出来查看当前系统最耗时的内核函数或某个用户进程 再往下看是一个表格式样的数据,每一行包含四列,分别是: 第一列 Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表 阅读全文
posted @ 2022-08-28 16:03 yooooooo 阅读(876) 评论(0) 推荐(0) 编辑
摘要:1、perf命令简要介绍 1.1 perf采集数据 让我们从 perf 命令(performance 的缩写)讲起, 它是 Linux 系统原生提供的性能分析工具, 会返回 CPU 正在执行的函数名以及调用栈(stack) perf record -F 99 -p 3887 -g -- sleep 阅读全文
posted @ 2022-04-04 12:43 yooooooo 阅读(154) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示