在 Linux 系统中,尤其是 Ubuntu,当你需要排查程序为何崩溃、文件为何打不开、权限为何被拒绝等问题时,strace 是一个极其强大的调试工具。它能实时跟踪程序执行过程中所有的 系统调用(system calls),让你“看到”程序与操作系统内核之间的每一次交互。
本教程将手把手教你如何使用 strace,即使你是 Linux 新手,也能轻松上手!我们将围绕 Ubuntu strace系统调用跟踪 这一核心主题,逐步讲解安装、基本用法、常用参数和实战案例。

系统调用是用户程序请求操作系统内核执行特权操作的接口。例如:打开文件(open)、读取数据(read)、写入数据(write)、创建进程(fork)等。这些操作必须由内核完成,普通程序不能直接访问硬件或关键资源。
strace 就像一个“监听器”,它会拦截并记录目标程序发出的所有系统调用及其返回值,帮助你理解程序到底在做什么。
在大多数 Ubuntu 系统中,strace 已经预装。如果没有,可以通过以下命令安装:
sudo apt updatesudo apt install strace最简单的用法是在 strace 后面直接跟你要运行的命令。例如,跟踪 ls 命令:
strace ls /home你会看到大量输出,每一行代表一次系统调用。例如:
execve("/bin/ls", ["ls", "/home"], 0x7ffd12345678 /* 58 vars */) = 0brk(NULL) = 0x55a1b2c34000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3...虽然信息很多,但你可以从中看到 ls 是如何加载动态库、打开目录、读取文件名并最终退出的。
-o file:将输出保存到文件,避免终端刷屏。strace -o trace.log ls /tmp -e trace=:只跟踪特定类型的系统调用。strace -e trace=file ls /home 常见选项:file(文件操作)、network(网络)、process(进程管理)、all(全部)。 -p PID:附加到正在运行的进程(需权限)。# 先找到进程IDps aux | grep myapp# 假设PID是1234sudo strace -p 1234 假设你运行一个叫 myapp 的程序,它报错:“无法打开 config.txt”。你可以这样排查:
strace -e trace=file ./myapp 2>&1 | grep config.txt这条命令只显示与文件相关的系统调用,并过滤出包含 config.txt 的行。你可能会看到类似:
openat(AT_FDCWD, "config.txt", O_RDONLY) = -1 ENOENT (No such file or directory)这说明程序在当前目录下找不到 config.txt。问题就清晰了:要么文件不存在,要么路径不对。
通过本教程,你应该已经掌握了 Ubuntu strace系统调用跟踪 的基本技能。无论你是开发者、运维人员还是 Linux 爱好者,strace 都是你工具箱中不可或缺的 Linux系统调用监控 利器。
记住几个关键点:
strace command:跟踪新启动的命令strace -p PID:跟踪正在运行的进程-e trace=file/network/process:按类别过滤-o file:输出到文件便于分析熟练使用 strace,你就能快速定位各种诡异问题,成为真正的 Ubuntu调试工具 高手!
提示:在生产环境中使用 strace 可能会影响性能,请谨慎操作。
本文由主机测评网于2025-12-19发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251210220.html