首页
学习
活动
专区
圈层
工具
发布

谢欢:向linux内核引进object trace

作者简介 谢欢,大家可以叫我Jeff, 我目前就职于某国际知名linux发行版开源公司, 热衷于linux内核。...我平时把linux内核源码当小说一样阅读学习,也一直把能给linux社区贡献更多有质量的代码而努力。...今年10月中旬,我向Linux内核社区提交了一个关于tracing 的patchset. tracing 的 Maintainer steve 和kprobe的maintainer Masami都非常感兴趣...对应patch: trace: Add trace any kernel object 到后面,这个功能发展成监控object值的变化。...对应patch: trace/objtrace: get the value of the object 这个功能不仅仅社区大佬感兴趣,也有很多圈内人和学习了我tracer课程的童鞋比较感兴趣,同时给我发邮件提出一些疑问和建议

2K30

用 Trace32 分析内核死机

... [  423.401490] Process swapper/4 (pid: 0, stack limit = 0xffffffc0b28bc058) [  423.401496] Call trace.../0x114 [  423.401728] Code: b90052a0 34000840 f9400321 f9400720 (f9000420)  [  423.401736] ---[ end trace...,这个和出错时候报的地址一致“Unable to handle kernel NULL pointer dereference at virtual address 00000008” 因为ARM64内核的虚拟地址空间范围是...Trace32 分析 利用dmesg我们分析了产生问题时候的来龙去脉,但是想要彻底解决还需要trace32进一步分析。...包括但不限于:C/C++,Arm, Linux,Android,人工智能,单片机,树莓派,等等。在公众号内回复「peter」,即可免费获取!! 记得点击分享、赞和在看,给我充点儿电吧

2.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

    文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...参考 【错误记录】解压 Linux 内核报错 ( Can not create symbolic link : 客户端没有所需的特权 | Windows 中配置 7z 命令行执行解压操作 ) 博客 ;...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用

    29.6K32

    【Linux内核及内核编程】Linux内核的组成

    作为全球应用最广泛的开源操作系统内核,Linux内核不仅支撑着Android系统、云计算平台和超级计算机,更是理解现代操作系统原理的最佳实践样本。...一、源代码目录:打开内核世界的地图​ 典型内核源码目录结构(以Linux 5.15为例): linux-5.15/ ├── arch/ # 硬件架构代码(x86, arm, riscv...Linux 提供了多种通信方式,各有适用场景:​ (1)管道(Pipe)​ 特点:半双工(单向传输),只能在父子进程间使用​ 例子:命令行中ls | grep "txt",ls的输出通过管道传给grep​...类比:​ 用户空间像普通居民区,内核空间像保护区。...Linux内核的设计哲学——模块化、可扩展性、性能优化——不仅体现在代码结构中,更渗透着Unix"做一件事并做好"的工程智慧。

    27810

    【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

    文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...按钮 , 此时就可以在 VSCode 中阅读 Linux 内核源码 ;

    27K30

    linux内核编程_linux内核是什么

    内核——操作系统的内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类的用户界面—-操作系统的外在表象 基本的文件管理工具和系统工具 Linux内核的组成 Linux内核源代码目录结构是什么...Linux内核的有哪些组成部分? 进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC) Linux内核的的组成部分之间有什么关系?...Makefile:分布在Linux 内核源代码中的Makefile,定义Linux 内核的编译规则。 配置文件(Kconfig):给用户提供配置选择的功能。...记录哪些部分被编译入内核、哪些部分被编译为内核模块。 在Linux 内核中增加程序需要完成哪些工作? 将编写的源代码复制到Linux 内核源代码的相应目录。...次引导加载程序加载Linux内核和可选的初始RAM 磁盘,将控制权交给Linux内核源代码。 运行被加载的内核,并启动用户空间应用程序。

    23.4K31

    利用动态 tracing 技术来 trace 内核中的网络请求

    简单来说,kprobe 是内核的一个提供的一个 trace 机制,在执行我们所设定特定的内核函数时/后,会按照我们所设定的规则触发我们的回调函数。...trace 那么,在我们今天的场景下,我们应该选择在什么函数上加上对应的 hook 呢?...这也是名字中 e 的来历(extend) 本质上而言,eBPF 在内核维护了一层 VM,可以加载特定规则生成的代码,让内核变得更具有可编程性(后面我争取写一篇 eBPF 从入门到入土的介绍文章) Tips...SystemTap + kprobe eBPF 的版本实现了,但是有个问题啊,eBPF 只能在高版本的内核中使用。一般而言,在 xb86_64 上,Linux 3.16 中支持了 eBPF。...而我们依赖的 kprobe 对于 eBPF 的支持则是在 Linux 4.1 中实现的。通常而言,我们一般推荐使用 4.9 及以上内核来配合 eBPF 使用 那么问题来了。

    2.1K20

    Linux内核-什么是内核

    让我们了解和熟悉基本的Linux内核相关的信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核(本章节) Linux内核-内核参数 Linux内核-proc文件系统 Linux...他们都基于安卓(Linux内核)开发自己的OS系统。 虽然我们用安卓来比喻内核,不是很恰当,毕竟安卓系统也是基于Linux内核,我们这里也不用纠结这个问题,我们只需要理解这个比较抽象的概念即可。...什么是Linux内核 Linux 内核是Linux操作系统的核心部分,它是一个自由和开放源代码的类Unix操作系统内核。...以下是Linux内核的一些关键特点和功能: 开源:Linux内核的源代码是公开的,任何人都可以查看、修改和发布自己的版本。...Linux内核的官方网址就是https://www.kernel.org/ 本地内核文件 我们在Linux基础-linux目录介绍过/boot目录就是内核相关的的目录,这个是未升级内核之前的目录结构,可以和上面的内核版本进行对应

    4.1K10

    LINUX内核

    一、Linux内核2.6特点: 1.新的调度器 2.内核抢占 3.改进线程模型 4.虚拟内存 5.文件系统 6.音频:音频体系结构ALSA.支持USB音频和MIDI设备,并支持全双工重放功能。...二、LINUX内核的组成 1.LINUX内核源代码目录结构 1)arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。如i386,arm,powerpc,mips等。...4)Documentation:内核各部分通用解释和注释。...模块 16)sound:ALSA,OSS音频中设备的核心代码和常用设备驱动 17)usr:实现了用于打包和压缩的CPIO等 2.LINUX的内核组成部分 2.1 LINUX主要用进程调度,虚拟文件系统,...3.Linux内核空间与用户空间 Linux只能通过系统调用和硬件中断来完成用户空间到内核空间的控制转移

    17.5K30

    【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )

    文章目录 一、解压内核源码 二、查询当前 Linux 内核版本号 三、进入并查看 linux 内核源码目录 一、解压内核源码 ---- 将 下载的 Linux 内核源码 linux-5.6.14.tar.gz...拷贝到 Ubuntu 虚拟机中 , 执行 tar xvf linux-5.6.14.tar.gz 命令 , 解压 Linux 内核源码 ; 解压完毕后 , linux-5.6.14 目录中就是解压后的...Linux 内核源码 ; 二、查询当前 Linux 内核版本号 ---- 执行 uname -a 命令 , 查询当前 Ubuntu 系统的 Linux 内核版本号 , 执行过程如下 : root@ubuntu...x86_64 x86_64 x86_64 GNU/Linux root@ubuntu:~/kernel# root@ubuntu:~/kernel# 当前的内核版本号是 4.13.0 ; 三...、进入并查看 linux 内核源码目录 ---- 进入之前解压的 linux-5.6.14 内核源码目录 ; root@ubuntu:~/kernel# ls linux-5.6.14 linux-5.6.14

    91.3K60

    Linux 内核 vs Windows 内核

    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。...操作系统核心的东西就是内核,这次我们就来看看,Linux 内核和 Windows 内核有什么区别? ---- 内核 什么是内核呢?...完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。...Monolithic Kernel Monolithic Kernel 的意思是宏内核,Linux 内核架构就是宏内核,意味着 Linux 的内核是一个完整的可执行程序,且拥有最高的权限。...,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序; Linux 的内核设计是采用了宏内核,Windows 的内核设计则是采用了混合内核。

    19.7K30

    linux 切换内核版本,切换 Linux 内核版本

    Linux 内核是开源类 Unix 系统宏内核。仅仅一个内核并不是一套完整的操作系统。有一套基于 Linux 内核的完整操作系统叫作 Linux 操作系统。...Kernel 是 Linux 系统的核心,主要负责硬件的支持。 Linux 内核提供了安全补丁, bugfix 和新特性。 Linux 内核在 GNU 通用公共许可证第 2 版之下发布。...Linux 内核版本变更可能导致网络访问异常,声音异常,甚至是桌面环境无法启动。...Linux 内核版本号的意义 Linux 内核版本号由 3 组数字组成:第一个组数字。第二组数字。第三组数字 第一个组数字:目前发布的内核主版本。...查看内核版本 在 Linux 机器上执行如下命令查看当前正在使用的内核版本 uname -r 使用如下命令查看当前系统安装的内核版本 dpkg -l | grep linux-image 如果使用的是

    30.7K20

    Linux内核开发_1_编译LInux内核

    准备工作 1.1 学习环境 1.2 下载Linux内核源码 1.3 解压Linux内核 1.4 目录结构介绍 2....内核版本: linux-4.10.15 1.2 下载Linux内核源码 首先我们需要下载Linux-4.10.15内核,我们可以直接使用wget下载: wget https://cdn.kernel.org...Linux系统的内核函数。...,而gnu的软件体系在不断的升级进化,每次的升级,都会被用在正在开发中最新的Linux内核,而除了原始版的Linux内核不是在Linux上编译出来的以外,其余的Linux内核版本都是在Linux内核上开发而来的...不确定的因素很多,所以这里我给大家的建议是,如果你想编译Linux内核,最好选择一个与它使用的Linux内核版本相仿的Linux发行版来编译它 如我选择学习Linux内核,并且选择的Linux

    23.4K20

    Linux内核编程_linux内核开发工具

    【转载】Linux内核编程与应用编程对比 转载链接1:http://www.arrowapex.cn/archives/66.html 在此之前也不清楚linux内核编程跟用户应用程序编程之间有什么不同...1.linux内核编程和用户应用程序编程最大的不同是,前者是在内核态下运行的,而后者主要在用户态下运行,有时通过一些系统调用切换到内核态下运行,但这时间不会太长。...2.内核编程引进的头文件都在内核源码的include文件夹下,比如我的debian linux 2.6环境下是:/usr/src/linux/include下,而用户应用程序编程引进的头文件都是从开发环境头文件的...3.要查询一个函数能否在内核编程中用,可以通过http://lxr-itec.uni-klu.ac.at/linux-2.6.4/ident查 (这是针对linux2.6内核,也有针对2.4内核的),如果能查到...对于在linux内核实现网关的某些功能时,我发现,虽然linux已经提供了很多现成的东西,可以保证快速开发。但是内核本身架构是一个通用计算机,不是专门针对网络处理的。

    16.1K20

    【Linux内核及内核编程】Linux2.6 后的内核特点

    2003 年发布的 Linux 2.6 内核是一个里程碑,它标志着 Linux 从 “极客玩具” 向全场景操作系统的蜕变。...如果说 2.4 内核是 Linux 进入企业级市场的起点,那么 2.6 及后续版本则是一场从内到外的 “现代化革命”,不仅让 Linux 在服务器、桌面、嵌入式领域全面开花,更奠定了移动互联网和云计算时代的技术基石...1.2 内核抢占:让内核 “灵活刹车” 2.6 之前的内核只有在用户态才能抢占,内核态代码一旦运行就必须完成,这在实时场景中很危险(比如打印机卡纸时内核可能无法及时响应)。...二、线程模型:从 “轻量级进程” 到 “真正的线程” 早期 Linux 把线程当作 “共享资源的进程”,调度和资源管理不够精细。...ALSA(高级 Linux 声音架构)免费开源,支持: 多通道音频(5.1、7.1 声道),在家看电影有影院级体验。 软件合成器(如 FluidSynth),音乐制作爱好者可以用 Linux 编曲。

    14410

    【Linux 内核】编译 Linux 内核 ⑦ ( 安装内核模块 | 安装内核 | 重启系统 | 查看当前内核版本 )

    文章目录 一、安装内核模块 二、安装内核 三、重启系统 四、查看当前内核版本 一、安装内核模块 ---- 确保 Linux 内核编译完成 , 没有任何报错之后 ; 参考 【Linux 内核】编译 Linux...内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 ) 博客 ; 进入 Linux 内核源码的根目录 , 执行 sudo make modules_install 命令 , 安装编译好的内核模块...-5.6.14# root@ubuntu:~/kernel/linux-5.6.14# 二、安装内核 ---- 内核模块安装完成后 , 执行 sudo make install 命令 , 安装内核...; 下面的内核安装过程会持续很长时间 ; 内核安装过程 : root@ubuntu:~# cd kernel/linux-5.6.14 root@ubuntu:~/kernel/linux-5.6.14...查看当前的内核版本 , 发现当前内核版本已经

    19.7K50

    强劲的Linux Trace工具:bpftrace (DTrace 2.0) for Linux 2018

    Original:阿里 姜弋内核月谈 译者: 姜弋 译者注:原作者是大名鼎鼎的性能分析专家:Brendan Gregg,现在工作在Netflix,之前工作在Sun,在Sun公司的时候,他就做了大量的性能分析和...尤其是,可以保存和接受stack trace作为变量的能力。...我曾经告诉很多工程师和一些公司关于做一个在Linux上的高级trace工具,我认为这个是Linux商业环境下一个比较有趣的课题,所以,我才花那么长的时间来完成它: 1....然而,SystemTap从来没有完全合并到Linux内核中(部分是这样的,比如uprobes),所以作为一个脱离树的项目,它需要维护才能工作,而RedHat只为RHEL做了这一点。...结局 自从四年前eBPF开始并入内核以来,它改变了Linux跟踪技术的格局。我们现在有了lib、tools和为eBPF构建的high-level front-end:bpftrace。

    6.4K11
    领券