linux如何打开trace
- Linux
- 2025-07-22
- 8
Linux系统中,“trace”可能指代不同的工具和功能,具体取决于上下文,这里我们将讨论两种常见的与“trace”相关的操作:使用traceroute命令来追踪网络路由,以及使用strace或ltrace等工具来跟踪系统调用和库函数调用,以下是详细的步骤说明:
使用traceroute命令追踪网络路由
traceroute是一个用于确定数据包从源主机到目标主机经过路径的命令行工具,它通过发送一系列具有不同生存时间(TTL)的UDP数据包或ICMP Echo请求,并记录每个中间节点的响应时间和IP地址,从而展示出完整的传输路径。
安装traceroute
大多数Linux发行版默认已经安装了traceroute,如果没有,可以通过包管理器进行安装:

- Debian/Ubuntu: sudo apt-get install traceroute
- CentOS/RHEL: sudo yum install traceroute
- Fedora: sudo dnf install traceroute
基本用法
打开终端后,输入以下命令来执行traceroute:
traceroute [选项] <目标主机名或IP地址>
要追踪到Google的路径,可以运行:
traceroute www.google.com
常用选项
| 选项 | 描述 |
|---|---|
| -n 或 --numeric | 以数字形式显示IP地址,不尝试解析主机名 |
| -m <max_ttl> | 设置最大跳数,超过则停止 |
| -w <timeout> | 设置等待每次回复的超时时间(秒) |
| -q <queries> | 每个TTL值发送的数据包数量 |
| -I | 使用ICMP而非UDP进行探测 |
示例输出
traceroute to www.google.com (172.217.10.14), 30 hops max, 60 byte packets 1 router.local (192.168.1.1) 1.123 ms 0.987 ms 1.056 ms 2 10.0.0.1 (10.0.0.1) 2.345 ms 2.234 ms 2.156 ms 3 ...
每一行代表一个跃点,显示了该跃点的IP地址和往返延迟时间。

使用strace跟踪系统调用
strace是另一个强大的调试工具,用于监视程序执行时的系统调用,这对于理解应用程序如何与操作系统交互非常有用。
安装strace
同样,大多数Linux系统都预装了strace,若未安装,可通过以下方式安装:
- Debian/Ubuntu: sudo apt-get install strace
- CentOS/RHEL: sudo yum install strace
- Fedora: sudo dnf install strace
基本用法
要跟踪一个命令的系统调用,只需在strace后面加上该命令即可:
strace [选项] <命令>
跟踪ls命令的系统调用:
strace ls -l /home/user
常用选项
| 选项 | 描述 |
|---|---|
| -c | 统计每个系统调用的次数 |
| -o <文件> | 将输出重定向到指定文件 |
| -s <字符串长度> | 设置日志中字符串的最大长度 |
| -f | 跟踪所有由当前进程派生出来的子进程 |
| -tt | 在每条系统调用前添加时间戳 |
示例输出
execve("/bin/ls", ["ls", "-l", "/home/user"], 0x7ffdffff) = 0 brk(0x55786b4) = 0x5578700 access("/etc/ld.so", R_OK) = -1 ENOENT (No such file or directory) ...
每一行显示了一个系统调用及其返回值。
FAQs
Q1: 如何更改traceroute使用的协议?
A1: 默认情况下,traceroute使用UDP协议,如果你想改用ICMP协议,可以使用-I选项。
traceroute -I www.example.com
Q2: 我可以使用strace来诊断网络问题吗?
A2: 虽然strace主要用于跟踪系统调用,但它也可以帮助你了解网络相关的系统调用,如socket(), connect(), send(), recv()等,这有助于识别应用程序层面的网络问题,对于更深层次的网络问题,建议结合使用专门的网络诊断工具如ping, netstat, tcpdump
