1

デバッグしようとしている Python ライブラリ (pyzeroconf) があります。次のコードは、データがソケットに送信されたかのように '34' を返しますが、2 つの異なる Wireshark を搭載した PC でこれらのパケットを確認できません。

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

私は、コール スタックで何が起こっているのかを理解する必要があるところまで来ています。何が起こっているかを追跡する方法はありますか?

解決策:この問題は、ライブラリがデフォルトとして把握していた「バインド アドレス」に関連していました。「0.0.0.0」の値は許可されておらず、(少なくとも Linux では) サイレントに失敗します。

4

3 に答える 3

4

あなたはstrace、例えば、使用することができます

$ strace -o logfile -e trace=network cmdline
于 2011-01-07T15:02:32.257 に答える
1

これはあなたが期待するものではないと確信していますが、助けることができます: strace -f -F python myscript.py

strace は、汎用プログラムのシステム コールをダンプします。

于 2011-01-07T15:03:32.223 に答える
0

INADDR_ANY IP アドレスが失敗するのはなぜですか? すべきではありません。私の観点からすると、あなたの写真には何か他のものが欠けています。コード ブロックを除いて、(errno, string) を使用して、より説明的なエラー メッセージを取得しようとするとどうなりますか。

于 2011-01-07T20:41:55.690 に答える