V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
feather12315
V2EX  ›  Linux

迫于被名词所困,分享一下自己对 Linux 下动态调试工具概念的理解

  •  
  •   feather12315 · 2020-12-12 02:20:21 +08:00 · 2112 次点击
    这是一个创建于 1448 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于 ftrace 、tracepoint 、kprobe 等名词,简单地划分三个层次:

    • 数据获取方式

    4+1 类:kprobe / uprobe / tracepoint / USDT / <基于硬件实现的计数器>

    • 数据传递手段

    3 类机制:ftrace / perf_event_open() / eBPF 其中ftrace又有tracerftrace-based events(tracepoint-based / kprobe-based, uprobe-based / perf events)

    • 用户前端工具

    基于上述数据获取方式、传递手段实现的 systemtap,perf,bcc 等

    自己写的 blog 原文:Linux 动态追踪工具一览

    特别推荐的参考资料:

    1. lwn.net: Unifying kernel tracing
    2. Julia Evans Blog: Linux tracing systems & how they fit together
    3. Slides: Unified Tracing Platform Bringing tracing together
    第 1 条附言  ·  2020-12-12 20:13:45 +08:00

    ftrace-based events(tracepoint-based / kprobe-based, uprobe-based / perf events)

    这句之前理解还是有点问题,根据Linux kernel中有关events的头文件分类trace_events.hperf_event.h,利用ftrace的events叫做trace event,分为静态的racepoint-based events,动态的kprobe-based / uprobe-based events。而perf events,其采集的数据用于performance measurement,最早利用的是硬件,所以原名perf counter,后来又有了软件实现的counter。

    perf events参考:Linux wiki:perf tutorial

    更新总结:

    • kprobe、uprobe能够hook函数代码中的任意位置,一个用于kernel,一个用于application
    • tracepoint是埋在代码中的静态hook点
    • ftrace是框架,使用dynamic tracepoint,利用tracer处理数据,使用tracefs输出数据
    • trace events是一种输出捕获得到的数据的模板,使用tracefs输出数据,根据数据的获取方式分为tracepoint-based events、kprobe-based events、uprobe-based events三类
    • perf events采集到的数据用于衡量性能,亦发展称为一种框架
    • USDT是用来trace ELF binary application的,用来trace解释型语言的是dynamic USDT
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5440 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:33 · PVG 11:33 · LAX 19:33 · JFK 22:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.