-
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 调用),可能输出:
cioctl(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
- 查询任意运行进程的内核栈
linux debug工具集合
Konwledging2025-12-04 10:43
相关推荐
Ruiery3 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相欧米欧4 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用Ruiery4 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化qetfw5 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证逆风的蚂蚁6 小时前
linux服务器性能调整怎么落地?我把 CPU 调度、I/O 优先级和内核参数这几个旋钮都拧了一遍沫璃染墨10 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包AI_Lab0112 小时前
宝塔用了两年,有没有必要换成轻量方案?by2099912 小时前
Linux GDB 调试与 CGDB 使用星恒随风12 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现feng_you_ying_li15 小时前
linux之网络层