跟踪Linux套接字调用?

1 投票
3 回答
2861 浏览
提问于 2025-04-16 09:34

我正在调试一个Python库(pyzeroconf)。下面这段代码返回了'34',就好像数据已经通过套接字发送出去,但我在两台装有Wireshark的电脑上都看不到这些数据包。

bytes_sent = self.socket.sendto(out.packet(), 0, (addr, port))

我现在需要搞清楚在调用过程中发生了什么。有办法追踪一下发生了什么吗?

解决方案:问题出在库默认选择的“绑定地址”上。值为“0.0.0.0”是不被允许的,这会导致(至少在Linux上)悄悄失败。

3 个回答

0

为什么INADDR_ANY这个IP地址会失败呢?其实它不应该失败。从我的角度来看,你的情况可能还有其他问题。如果你尝试在代码块之外使用(errno, string)来获取更详细的错误信息,会发生什么呢?

1

我知道这可能不是你想要的答案,但我可以帮你:
使用命令:strace -f -F python myscript.py

这个命令会显示一个普通程序在运行时所做的系统调用。

4

你可以使用 strace,比如:

$ strace -o logfile -e trace=network cmdline

撰写回答