0

0

Linux 系统调用跟踪 strace 使用方法

冷炫風刃

冷炫風刃

发布时间:2026-02-14 18:06:10

|

562人浏览过

|

来源于php中文网

原创

strace通过-p pid可动态追踪运行中进程,常用-e trace=network,io过滤调用、-f跟踪子进程、-s 256扩大字符串截断长度、-o保存日志;需显式指定file/network等集合或具体系统调用如openat、connect,注意内核和strace版本兼容性。

linux 系统调用跟踪 strace 使用方法

strace 怎么看某个进程在干啥

直接 attach 到运行中的进程,用 -p 参数最常用。比如发现 nginx 响应变慢,先查 PID:pgrep nginx,再执行 strace -p 12345 -e trace=network,io —— 这样只抓网络和 I/O 系统调用,避免日志爆炸。

常见错误是没加 -e trace=... 就直接跑,结果输出全是 readwriteclock_gettime,根本没法定位问题。默认会跟踪所有系统调用,噪音极大。

  • -f 才能跟踪子进程(比如 fork 后的 worker)
  • -s 256 把字符串参数截断长度从默认 32 改大,否则看不到完整路径或 HTTP header
  • 想保存到文件?用 -o /tmp/trace.log,别用重定向(会丢掉 stderr 中的关键错误信息)

strace 抓不到 open 或 connect 是为啥

不是没发生,是默认过滤掉了。open、connect 这类调用属于 filenetwork 类别,但 strace 不自动展开这些类别名——必须显式指定。

正确写法是:strace -e trace=open,openat,connect,accept4,或者用预定义集合:strace -e trace=file,network。注意不同内核版本对集合支持略有差异,Ubuntu 22.04+ 和较新 kernel 支持较好,CentOS 7 的 strace 版本老,file 集合可能不含 openat

  • openat 在现代程序中比 open 更常用(尤其容器环境),漏掉它就看不到大部分文件打开行为
  • connect 不包含 UDP,要抓 UDP 连接得加 sendtorecvfrom
  • 如果目标进程用了 seccomp 或 ptrace restrictions(如某些容器 runtime),strace 可能被直接拒绝,报错 Operation not permitted

strace 输出里看到 EAGAIN 或 EWOULDBLOCK 怎么办

这是正常现象,不是错误。表示系统调用因非阻塞模式立即返回失败,程序自己会重试或转去 poll/epoll 等待。但如果高频出现(比如每秒几百次 read 返回 EAGAIN),说明程序在轮询而非等待事件,可能是逻辑卡死或配置不当。

方科网络ERP图文店
方科网络ERP图文店

方科网络ERP图文店II版为仿代码站独立研发的网络版ERP销售程序。本本版本为方科网络ERP图文店版的简化版,去除了部分不同用的功能,使得系统更加精炼实用。考虑到图文店的特殊情况,本系统并未制作出入库功能,而是将销售作为重头,使用本系统,可以有效解决大型图文店员工多,换班数量多,订单混杂不清的情况。下单、取件、结算分别记录操作人员,真正做到订单全程跟踪!无限用户级别,不同的用户级别可以设置不同的价

下载

关键看上下文:跟在 epoll_wait 后面的 read 出现 EAGAIN 是健康信号;但如果没有 epoll_wait,只有反复 read + EAGAIN,大概率是程序没正确处理 I/O 多路复用。

  • strace -T 显示每次调用耗时,有助于判断是否真在空转(比如 read 总是 0.000001s 返回 EAGAIN
  • -y 参数能显示文件描述符对应的路径(如 read(3read(3/12345/fd/3>),方便确认操作对象
  • 注意区分 EAGAINETIMEDOUT:后者才是真正的超时,通常意味着下游服务无响应

strace 跟踪启动阶段的程序怎么写命令

strace 直接跑命令即可,不用先启动再 attach。例如调试 Python 脚本启动卡住:strace -f -e trace=process,file,signal python3 app.py

重点在 -ftrace=process:前者确保跟踪 fork 出的子进程,后者能看见 cloneexecveexit_group,帮你确认程序是否成功 exec 到目标二进制,还是卡在动态库加载或 interpreter 初始化。

  • 如果程序启动后立刻退出,加 -v(详细模式)看 execve 参数是否正确,比如路径错、缺少 so、或架构不匹配(aarch64 二进制跑在 x86 容器里)
  • LD_DEBUG=libsstrace 配合用更准:前者看动态链接过程,后者看系统调用层面的 open/mmap 行为
  • 避免在生产环境长时间全量跟踪 execve,因为每个新进程都会触发大量输出,容易压垮终端或磁盘

真正难的是区分「系统调用失败」和「程序逻辑错误」——strace 只告诉你系统层发生了什么,不解释业务含义。比如看到一百次 stat("/etc/ssl/certs", ...) 失败,得结合代码确认是硬编码路径、chroot 环境缺失,还是容器挂载遗漏。这点容易被忽略。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

239

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

514

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

565

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

237

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

457

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3585

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

63

2026.01.13

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

23

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.1万人学习

Git 教程
Git 教程

共21课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号