长期支持版本

    社区创新版本

      常用工具

      ftrace

      1. ftrace:是一个针对linux kernel内核空间的debug工具,内核中会提供trace events供用户追踪。而ftrace则可以将events抓取出来,让用户能够直观地看到这些事件,同时也可以追踪内核的函数。
      2. ftrace的配置和使用:要使用ftrace,需要将其相关的依赖编译进内核,openEuler已经默认编译了ftrace选项,如果没开启可以在menuconfig里选择Kernel hacking -> Tracers -> Trace syscalls开启,同时还要编译debugfs,选择Kernel hacking -> Generic Kernel Debugging Instruments -> Debug Filesystem。
      • ftrace的功能配置

      ftrace通过debugfs向用户空间提供访问接口,内核配置debugfs后,会创建/sys/kernel/debug目录,debugfs文件系统就是挂载到该目录。如果内核支持ftrace相关的配置项后,会在debugfs下创建一个tracing目录,debugfs文件系统会挂载到该目录,该目录内容如下图所示:

      • ftrace debugfs接口介绍 用户可看到ftrace通过debugfs文件系统提供的一些控制和输出文件,如下对常用的文件做简单说明:

        available_tracers:可用的跟踪程序

        current_tracer:正在运行的跟踪程序

        available_events:列举了系统所有可用的trace events

        events:该目录对events按模块做了区分。

        set_event:列举当前要追踪的events

        tracing_on:用于控制跟踪打开或停止,echo 0 > tracing_on表示关闭,1表示打开

        trace:查看跟踪数据

      • 可用的跟踪程序

      zh-cn_image_0000001373373585

      function:一个无需参数的函数调用跟踪程序

      function_graph:一个使用子调用的函数调用跟踪程序

      • 追踪event
      # 先注明要追踪ras的arm_event
      echo ras:arm_event > /sys/kernel/debug/tracing/set_event
      
      # 这个文件可以看到event的具体格式,会打印什么字段
      cat /sys/kernel/debug/tracing/events/ras/arm_event/format
      
      # 启动追踪
      echo 1 > /sys/kernel/debug/tracing/tracing_on
      
      #  观察trace的输出
      tail -f /sys/kernel/debug/tracing/trace
      

      c50cb9df64f4659787c810167c89feb4_1884x257

      • 追踪内核函数入参

      选择跟踪mmap,其对应系统调用do_mmap,选择输出addr入参。

      zh-cn_image_0000001373379529

      # 通过kprobe跟踪
      echo 'p:probe1 do_mmap addr=%x1' > kprobe_events
      
      # 启用kprobe
      echo 1 > events/kprobes/probe1/enable
      
      # 启动追踪
      echo 1 > tracing_on
      
      # 查看trace数据
      

      zh-cn_image_0000001322379488

      • 追踪函数调用
      # 选择追踪类型
      echo function_graph > current_tracer
      
      # 设置过滤进程pid
      echo <pid> set_ftrace_pid
      
      # 开始追踪
      echo 1 > tracing_on
      
      # 查看trace数据
      

      zh-cn_image_0000001322219840

      strace

      strace命令是一个诊断、调试工具,可以通过使用strace对应用的系统调用及信号传递来进行分析,从而达到解决问题或了解应用执行过程的目的。

      可以通过strace -h来查看strace提供了哪些功能。

      zh-cn_image_0000001322112990

      最常用的使用方式(追踪xx命令,跟踪forks,打印时间,结果输出到output文件中)。

      strace -f -tt -o output xx
      

      kdump

      1. crash/kdump原理介绍

      kdump是系统运行在某个时间点的内存状态的快照,便于运维人员debug分析系统挂掉的原因,常用于系统宕机和panic。

      大致流程如下:

      zh-cn_image_0000001321685172

      1. 相关工具安装配置
      # 使用yum安装相应软件包
      yum install kernel-debuginfo-$(uname -r) kexec-tools crash -y
      
      # 设置crashkernel预留内存大小
      vim /etc/default/grub
      

      zh-cn_image_0000001372821865

      # 重新生成grub配置文件
      grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
      reboot
      
      # 启动kdump服务
      systemctl start kdump #启动kdump
      systemctl enable kdump  #设置开机启动
      
      1. crash触发

      步骤1. 内核具备默认配置,当硬锁和oops的时候会触发panic。

      zh-cn_image_0000001372824637

      步骤2. 用户可以修改该配置,以下相关命令可使配置生效一次,重启后失效。

      # 设置软锁触发panic
      echo 1 > /proc/sys/kernel/softlockup_panic
      
      # 设置kernel遇到OOM触发panic
      echo 1 > /proc/sys/vm/panic_on_oom
      
      # 进程出现hang时引发panic
      echo 1 > /proc/sys/kernel/hung_task_panic
      
      # 进程hangtask机制超时时间设置
      echo 60 > /proc/sys/kernel/kernel.hung_task_timeout_secs
      

      步骤3. 如需要重启自动重启配置,将下列参数写入/etc/sysctl.conf文件,执行sysctl -p生效。

      kernel.hung_task_panic=1
      kernel.hung_task_timeout_secs=60
      kernel.softlockup_panic=1
      vm.panic_on_oom=1
      
      1. crash分析

      步骤1. 开启crash调试。

      步骤2. 生成的vmcore文件一般会在/var/crash目录下。

      步骤3. 执行如下命令即可进入crash调试。

      crash {vmcore文件} {调试内核vmlinux}
      

      zh-cn_image_0000001372748125

      crash调试命令格式为 command args,command为需要执行的命令,args为部分调试命令需要的参数。

      命令用途
      help打印命令的help信息,可展示支持命令,也可查看具体命令的help信息,如help bt。
      bt打印函数调用栈信息。
      log打印系统消息缓冲区,可追加参数,如log。
      ps显示进程的状态,>表示进程为活跃状态。
      dis对给定函数或者地址进行反汇编,如dis -l [func]。
      mount展示当前的文件系统信息

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份