调试技术
文章平均质量分 84
内核调试技能
Aspiresky
一步一步向前走!
展开
-
浅析Linux追踪技术之ftrace:综述
Ftrace,全称Function Tracer,是一个内部跟踪器,旨在帮助系统的开发人员和设计人员了解内核内部的情况,可以用来调试或分析在系统中发生的延迟和性能问题。尽管ftrace通常被认为是函数跟踪器,但它实际上是由几个不同的跟踪实用程序组成的框架。原创 2024-02-16 20:30:00 · 2338 阅读 · 0 评论 -
浅析Linux内核线程监测机制:Hung Task
Hung Task机制周期性地监测系统中处于TASK_UNINTERRUPTIBLE状态(即D状态)的进程,如果超过120s(时间可配),进程状态还没有进行切换,khungtaskd就会打印提示信息。原创 2024-02-15 19:00:00 · 805 阅读 · 0 评论 -
Linux内核调试技术之printk
printk是Linux内核提供的打印函数,类似于用户态的printf,一个较大的差别在于printk支持多种日志级别,从而允许printk根据消息的等级选择性进行打印。printk打印的日志通常会显示在控制台上或者输出到日志文件(一般为/var/log/messages)中。原创 2022-12-14 21:50:47 · 1831 阅读 · 0 评论 -
Linux内核调试技术之动态调试
使用printk的打印方式只能通过设置输出等级来进行控制,具备一定的局限性。在实际系统运行过程中,我们更希望能选择性地打开某些子系统或者模块的输出,为此内核提供了动态调试技术。内核中包括pr_debug、dev_dbg接口都使用了动态调试技术。原创 2022-12-15 22:08:45 · 2346 阅读 · 0 评论 -
Linux内核调试技术之kprobes:基本原理与使用
Linux kprobes技术是一种可以跟踪内核函数执行状态的轻量级内核调试技术,利用kprobes技术可以在运行的内核中动态的插入探测点,当内核运行到该探测点后可以执行用户预定义的回调函数,以收集所需的调试状态信息而基本不影响内核原有的执行流程。{return 0;}.symbol_name = "do_fork", // 要追踪的内核函数为 do_fork.pre_handler = handler_pre // pre_handler 回调函数。原创 2022-12-14 21:45:58 · 2186 阅读 · 0 评论 -
Linux内核调试技术之kdump配置与使用
kdump是Linux内核发生崩溃时转储内存的一种机制,当内核发生错误时,kdump会将当前内核使用的内存导出为镜像文件(通常为vmcore)保存到硬盘上,之后可以使用crash等工具对内核错误原因进行分析。原创 2022-12-19 21:32:25 · 2218 阅读 · 0 评论 -
浅谈Linux追踪技术
随着计算机的发展,软硬件系统变得越来越复杂,于是衍生出了各类追踪技术和工具,用于验证和分析复杂系统内部运行的正确性,并为解决生产问题提供必要的帮助。从广义上来说,包括日志也是一种追踪技术,日志记录系统的运行信息,并且可以在系统出错时打印错误信息,但日志的功能通常限制于对系统的流程信息和错误进行打印,而无法记录系统更详细的运行信息。时至今日,Linux系统上已经产生了太多的工具,例如perf、ftrace、BFP等,如何在面临问题时,选择和搭配合适的工具反而成了难题。原创 2024-02-03 19:05:11 · 944 阅读 · 0 评论 -
浅析Linux追踪技术之ftrace:Event Tracing
Event Tracing(事件追踪)利用在内核代码中加入的各种Tracepoint(追踪点)实现对系统的追踪。Tracepoint可以在不创建自定义内核模块的情况下使用,以使用Event Tracing基础结构注册探测函数。原创 2024-02-13 19:00:00 · 2273 阅读 · 0 评论 -
浅析Linux追踪技术之kprobe:基于kprobes的Event Tracing
常规的Event Tracing(事件追踪)是通过散落在Linux内核代码各处的Tracepoint来实现的,这些Tracepoint数量有限,在出现问题时,往往不能覆盖到要追踪的函数;而利用kprobes机制,则可以实现对所有支持kprobes插入的代码点进行追踪。这种方式是 kprobe 和 ftrace 结合使用,通过 kprobe 来优化 ftrace 来跟踪函数的调用。原创 2023-08-23 22:23:33 · 1007 阅读 · 0 评论