Linux的strace工具使用

strace 是一个在 Linux 系统中用于跟踪进程执行时的系统调用和接收的信号的工具。它可以帮助开发者诊断程序运行时的问题,比如程序崩溃、性能问题等。下面是 strace 的一些常用命令行选项和它们的解释:

  1. 基本用法 :

    复制代码
    strace [选项] 命令 [参数...]
  2. 常用选项 :

    • -c: 统计每个系统调用的执行时间、调用次数和错误次数。
    • -f: 跟踪由 fork() 调用产生的子进程。
    • -p: 指定要跟踪的进程 ID。
    • -t: 在输出的每一行前加上时间戳。
    • -v: 输出详细的系统调用信息。
    • -o: 将输出的信息保存到文件中。
    • -e: 指定要跟踪的系统调用或者信号。
  3. 示例 :

    • 跟踪 cat 命令的系统调用:

      复制代码
      strace -c cat /dev/null
    • 跟踪进程 ID 为 1234 的进程的所有系统调用:

      复制代码
      strace -p 1234
    • 跟踪进程 ID 为 1234 的进程,并将输出保存到文件中:

      复制代码
      strace -p 1234 -o output.txt
    • 跟踪 open 系统调用和 close 系统调用:

      复制代码
      strace -e open,close cat /dev/null
  4. 高级用法 :

    • 使用 -a 选项来指定列的对齐方式。
    • 使用 -s 选项来指定字符串的长度。
    • 使用 -u 选项来指定用户名。
    • 使用 -e signal 来跟踪特定的信号。
  5. 信号跟踪 :
    当跟踪信号时,strace 会在信号处理函数前加上 ---,并在信号处理函数调用结束后加上信号的名称和错误码。

  6. 错误分析 :
    当系统调用出错时,strace 会显示错误码和错误描述。例如,ENOENT 表示文件或目录不存在。

  7. 性能分析 :
    使用 -T 选项来跟踪每个系统调用的花费时间。
    strace 是一个强大的工具,对于理解程序如何与操作系统交互非常有帮助。通过结合使用不同的选项,你可以获得关于程序运行的详细信息,从而帮助诊断和解决问题。

相关推荐
林_学1 分钟前
Docker Desktop 全卸了,新项目上线从3天缩短到3分钟
运维·docker·容器
陈平安Java and C2 分钟前
Docker镜像原理
运维·docker·容器
爱吃山竹的大肚肚2 分钟前
Nginx 最核心和常用的命令
java·运维·服务器·前端·nginx
程序员在线炒粉8元1份顺丰包邮送可乐4 分钟前
Docker 部署PaddleOCR 实战教程(含离线模型、接口调用、排障)
运维·docker·ai·容器
天上飞的粉红小猪5 分钟前
Socket UDP编程
linux·网络协议·udp
aosky19 分钟前
Vercel Labs agent-browser 深度测评:AI时代的浏览器自动化利器
运维·人工智能·自动化·agent-browser
柠檬汁Dev24 分钟前
云端开发,把应用上线时间从2天缩短到3分钟
服务器
皓月盈江24 分钟前
Linux Debian13安装后更换为国内镜像源,解决执行sudo命令提示用户名不在sudoers文件中问题
linux·服务器·sudo·debian13·debian13更换国内镜像源·用户名不在sudoers文件中
wdfk_prog24 分钟前
[Linux]学习笔记系列 -- [driver][base]class
linux·笔记·学习
龙仔72527 分钟前
ZLMediaKit 日志按日期切割与自动清理方案
运维·服务器·日志切割·自动删除