跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何利用活动监视器实时追踪 macOS 系统中的各种底层网络系统调用

活动监视器无法追踪底层网络系统调用,仅显示进程级吞吐量;需用Instruments(System Trace)、nettop、tcpdump/Wireshark或dtruss进行syscall、连接详情或抓包分析。 活动监视器无法直接追踪底层网络系统调用(如
socket
、
connect
、
sendto
、
recvfrom
等内核级 syscall)。 它显示的是 进程级网络吞吐量统计 ,数据来源于内核的网络协议栈计数器(如
netstat
类接口),而非系统调用层面的实时捕获。换句话说: 它告诉你“谁在收发多少字节”, 但不告诉你“谁在什么时候调用了哪个 socket 函数、连了哪个 IP 端口、发了什么内容”。 若需追踪底层网络系统调用,应使用以下专业工具:
dtrace
或
Instruments
(macOS 自带)
Instruments
中的 “System Trace” 模板可捕获包括
socket
,
connect
,
read
,
write
,
sendto
,
recvfrom
在内的完整 syscall 调用链,支持按进程、线程、堆栈过滤,还能关联到具体网络事件(如 DNS 查询、TLS 握手)。 启动方式:打开
Instruments
→ 新建模板 → 选择 “System Trace” → 点击右上角录制按钮,再复现网络行为即可。
nettop
(终端命令,系统原生) 通义灵码 Mac版 通义灵码 Mac版是阿里云推出的一款AI智能编码助手,深度集成于Xcode、VS Code及JetBrains等主流IDE中。它基于大模型技术,支持行级/函数级实时续写、自然语言生成代码、单元测试生成及智能问答等核心功能。macOS用户可通过插件市场直接安装,开箱即用,旨在辅助开发者高效完成编码任务,提升研发效率。 下载 提供比活动监视器更细粒度的连接视图:显示每个进程的活跃 TCP/UDP 连接、远程地址、端口、状态(ESTABLISHED、TIME_WAIT)、每秒收发包数与字节数。 示例:
nettop -P -L 0 # 实时显示所有进程的连接详情,无日志滚动 nettop -J "pid,command,local_addr,remote_addr,state,bytes_in,bytes_out" # 自定义字段输出
tcpdump
或
Wireshark
(抓包级分析) 直接捕获网卡原始数据帧,可看到 IP、TCP/UDP 头、应用层载荷(如 HTTP 请求),适用于排查连接失败、超时、重传等底层问题。 注意:需管理员权限,且不直接关联到进程名(
tcpdump
本身不绑定进程,需配合
lsof -i
或
nettop
交叉验证)。
dtruss
(syscall 级跟踪,需 sudo) 对单个进程做系统调用跟踪,能精确列出每次
connect()
是否成功、返回值、耗时等。 示例:
sudo dtruss -f -t connect,sendto,recvfrom curl https://example.com
活动监视器适合快速定位“哪个进程吃带宽”,但不是 syscall 追踪工具。真正需要看“调用了什么、连了哪里、为什么卡住”,请切换到
Instruments
、
nettop
或
dtruss
。

相关文章