使用 strace 分析Linux系统调用

系统调用是进程与操作系统内核交互的关键途径,用于执行如创建进程、文件操作等任务。本文介绍了常见的系统调用,如fork()、exit()、open()、read()等,并探讨了strace工具的使用,它允许开发者跟踪程序的系统调用,用于故障排查和性能分析。strace提供了多种选项,如按PID跟踪、过滤特定系统调用、计数系统调用等,帮助理解程序行为。
摘要由CSDN通过智能技术生成

系统调用简介

进程通过系统调用使用内核服务。系统调用会进入内核,让内核执行服务然后返回
在这里插入图片描述

一些常见的系统调用:

系统调用描述
fork()创建进程
exit()结束当前进程
wait()等待子进程结束
exec(filename, *argv)加载并执行一个文件
open(filename, flags)打开文件,flags 指定读/写模式
read(fd, buf, n)从文件中读 n 个字节到 buf
write(fd, buf, n)从 buf 中写 n 个字节到文件
close(fd)关闭打开的 fd
unlink(filename)删除文件

strace的常见用法

strace可以使你在不知道程序源代码的情况下跟踪应用程序的系统调用

让我们打开tldr查看strace的常见用法:

Troubleshooting tool for tracing system calls.
  More information: https://manned.org/strace.

  - Start tracing a specific process by its PID:
    strace -p pid

  - Trace a process and filter output by system call:
    strace -p pid -e system_call_name

  - Count time, calls, and errors for each system call and report a summary on program exit:
    strace -p pid -c

  - Show the time spent in every system call:
    strace -p pid -T

  - Start tracing a program by executing it:
    strace program

  - Start tracing file operations of a program:
    strace -e trace=file program

打印出运行echo wdnmd过程的系统调用:
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值