
Linux 内核调试
文章平均质量分 89
介绍Linux内核调试与性能优化、宕机难题的解决方案。
SGchi
talk is cheap,show me the code.
展开
-
内存泄漏分析
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当导致的。有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);没有及时释放不再使用的内存资源,造成内存泄漏,程序占用的内存资源越来越多。C/C++什么是内存泄露,内存泄露如何避免?原创 2024-01-25 16:40:08 · 1077 阅读 · 0 评论 -
快速搭建ARM64实验平台(QEMU虚拟机+Debian)
最近翻阅笨叔的《奔跑吧Linux内核》卷2,发现了一个非常好用的ARM64的实验平台,这里对部署流程做一个记录。使用“O0"来编译内核。在主机中编译内核。使用QEMU来加载系统。使用GDB单步调试内核和Debian系统。使用ARM64版本的Debian系统的根文件系统。在线安装Debian软件包。支持在虚拟机里动态编译内核模块。支持主机和虚拟机共享文件。原创 2024-02-22 20:47:14 · 2254 阅读 · 0 评论 -
Linux Kdump分析宕机问题案例
上述案例中发生崩溃的原因是"BUG: unable to handle kernel NULL pointer dereference at 0000000000000050",即内核发生了不能处理的空指针引用。为堆栈信息中RIP所指地址。在输出信息中我们可以看到触发宕机的代码在oops_test.c文件的第16行。堆栈中RDI,RSI分别指向了传入的第一个,第二个参数。结合代码我们可以看到,传入的两个参数类型分别是。参数的地址由堆栈中的。原创 2024-01-11 15:23:51 · 720 阅读 · 0 评论 -
Linux Kdump和Crash工具
Kdump是一种基于kexec的Linux内核崩溃捕获机制,简单来说系统启动时会预留一块内存,当系统崩溃调用命令kexec(kdump kernel)在预留的内存中启动kdump内核,该内核会将此时内存中的所有运行状态和数据信息收集到一个coredump文件中以便后续分析调试。原创 2024-01-04 18:03:40 · 1635 阅读 · 0 评论 -
Linux Perf 介绍
perf是一款Linux性能分析工具,内置在Linux内核的一个Linux性能分析框架中,利用CPU、性能检测单元(Performance Monitoring Unit,PMU)和软件计数(如软件计数器和跟踪点)等进行性能分析。快速定位和解决系统性能问题。它可以收集程序运行时的性能数据,包括CPU、内存、IO等方面的信息,并提供详细的性能分析和报告。生成程序的调用图,记录程序中函数之间的调用关系,并提供详细的调用图分析和报告。原创 2024-01-03 17:44:36 · 1520 阅读 · 0 评论 -
Linux Core Dump
当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。我们可以认为 core dump 是“内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。原创 2023-09-19 16:51:42 · 432 阅读 · 0 评论 -
Qemu+Arm64 仿真
Note: Linux原始镜像为vmlinux,后续可能是Image、Image.gz、uImage镜像, 处理过程是。CONFIG_INITRAMFS_SOURCE这里填写你自己的路径地址。如果编译时出现上述报错,sudo su 切换root用户即可。这里可以根据自己的需要选择不同的CPU进行仿真调试。原创 2023-09-21 10:23:06 · 614 阅读 · 0 评论 -
Linux Kprobe原理与应用
首先kprobe是最基本的探测方式,是实现后两种的基础,它可以在任意的位置放置探测点(就连函数内部的某条指令处也可以),它提供了探测点的调用前、调用后和内存访问出错3种回调方式,分别是pre_handler、post_handler和fault_handler,其中pre_handler函数将在被探测指令被执行前回调,post_handler会在被探测指令执行完毕后回调(注意不是被探测函数),fault_handler会在内存访问出错时被调用;2、一般情况下,可以探测内核中的任何函数,包括中断处理函数。原创 2023-09-01 11:42:01 · 543 阅读 · 0 评论 -
Linux Ftrace介绍
Ftrace 是 Linux 官方提供的跟踪工具,在 Linux 2.6.27 版本中引入。Ftrace 可在不引入任何前端工具的情况下使用,让其可以适合在任何系统环境中使用。特定内核函数调用的频次 (function)内核函数在被调用的过程中流程(调用栈) (function + stack)内核函数调用的子函数流程(子调用栈)(function graph)由于抢占导致的高延时路径等性能分析器,用来提供统计和直方图数据(需要 CONFIG_ FUNCTION_PROFILER=y)原创 2023-10-08 15:34:47 · 255 阅读 · 0 评论 -
Linux eBPF介绍(二)
作为 eBPF 最重大的改进之一,一次编译到处执行(简称 CO-RE)解决了内核数据结构在不同版本差异导致的兼容性问题。不过,在使用 CO-RE 之前,内核需要开启和这两个编译选项。原创 2023-09-27 20:39:23 · 570 阅读 · 0 评论 -
Linux eBPF介绍(一)
eBPF(extened Berkeley Packet Filter)是一种内核技术,它允许开发人员在不修改内核代码的情况下运行特定的功能。eBPF 的概念源自于 Berkeley Packet Filter(BPF),后者是由贝尔实验室开发的一种网络过滤器,可以捕获和过滤网络数据包。2014 年eBPF 随 Linux 3.18 首次限量发布,充分利用 eBPF 至少需要 Linux 4.4 以上版本。原创 2023-09-27 11:46:54 · 1408 阅读 · 0 评论