linux debug工具集合

  • cat /proc/pid/fd/

    • 查看指定进程(PID)打开的所有文件描述符(fd)及其关联资源
  • strace -p pid

    • 是 Linux 下 跟踪指定进程(PID)系统调用和信号 的核心调试命令 ------ 简单说,它能 "实时监控" 目标进程正在执行哪些内核系统调用(比如 open、ioctl、mmap、close 等)、传递了什么参数、返回了什么结果,还能捕获进程收到的信号,是排查应用与内核(如 DRM 驱动)交互问题的 "利器"

    • strace -p 1234 -e trace=ioctl 跟踪 PID=1234 的 DRM 应用

      命令部分 作用 补充说明

      • strace 核心工具:跟踪进程的系统调用和信号 底层通过 ptrace 系统调用实现,依附到目标进程
      • -p pid 选项:指定要跟踪的进程 ID(pid 是目标进程的编号) 进程必须正在运行,否则会提示 "无此进程"
    • 扩展常用选项(调试 DRM 场景必备):

      c 复制代码
      -f:跟踪进程的子进程(比如 DRM 应用创建子进程处理渲染时,会一起跟踪);
      -t:在输出中添加时间戳(方便定位某个系统调用发生的时间);
      -T:显示每个系统调用的执行耗时(排查耗时过长的调用,如 ioctl 阻塞);
      -e trace=ioctl:只跟踪 ioctl 系统调用(DRM 应用主要通过 ioctl 与驱动交互,过滤后更简洁);
      -o log.txt:将跟踪日志输出到文件(避免终端刷屏,方便后续分析)。
    • 输出示例(跟踪 DRM 应用进程)

      用 strace -p 1234 -e trace=ioctl 跟踪 PID=1234 的 DRM 应用(只看 ioctl 调用),可能输出:

      c 复制代码
      ioctl(3, DRM_IOCTL_GEM_CREATE, {size=4194304, handle=0x7ffe9c3b2abc}) = 0
      ioctl(3, DRM_IOCTL_GEM_FLINK, {handle=1, name=0x7ffe9c3b2abd}) = 0
      ioctl(3, DRM_IOCTL_PRIME_HANDLE_TO_FD, {handle=1, flags=0, fd=5}) = 0
      ioctl(3, DRM_IOCTL_GEM_OPEN, {name=12345, handle=0x7ffe9c3b2abc, size=4194304}) = 0
      ioctl(3, DRM_IOCTL_MODE_SET_CRTC, {crtc_id=1, fb_id=2, x=0, y=0, mode=..., gamma_size=0}) = 0
  • cat /proc/pid/stack

    • 查询任意运行进程的内核栈
相关推荐
爱吃香菜的初学者2 小时前
十四.Linux——消息队列
linux·运维·开发语言
Apipi*9 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
天启HTTP10 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
广州浮点FLOATLIC12 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
BLUcoding12 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK12 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil20813 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)13 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter62513 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
xh didida14 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++