【问题标题】:tracing Linux socket calls?跟踪 Linux 套接字调用?
【发布时间】:2011-01-07 14:53:24
【问题描述】:

我有一个要调试的 Python 库 (pyzeroconf)。以下代码返回“34”,就好像数据是通过套接字发送的,但我在 2 台不同的配备了 Wireshark 的 PC 上看不到这些数据包。

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

我现在需要了解调用堆栈中发生了什么。有没有办法追踪正在发生的事情?

解决方案:问题与库默认的“绑定地址”有关。值“0.0.0.0”是不允许的,并且会静默失败(至少在 Linux 上)。

【问题讨论】:

    标签: python linux sockets network-traffic


    【解决方案1】:

    你可以使用strace,例如

    $ strace -o logfile -e trace=network cmdline
    

    【讨论】:

      【解决方案2】:

      我很确定这不是您所期望的,但可以提供帮助: strace -f -F python myscript.py

      strace 转储通用程序的系统调用。

      【讨论】:

      • 感谢您的帮助 - 我的期望是在实际系统调用周围检测到一些奇怪的东西,但我在跟踪中看不到任何东西。我不明白为什么没有数据包出现在电线上!!
      【解决方案3】:

      为什么 INADDR_ANY IP 地址会失败?它不应该。从我的角度来看,您的照片中还缺少其他东西。如果您尝试使用 (errno, string) 来获取更具描述性的错误消息,会发生什么情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 1970-01-01
        • 2021-08-08
        • 1970-01-01
        • 1970-01-01
        • 2015-07-02
        相关资源
        最近更新 更多