2011-01-07 5 views
1

У меня есть библиотека Python, которую я пытаюсь отлаживать (pyzeroconf). Следующий код возвращает «34», как если бы данные были отправлены по сокету, но я не могу видеть эти пакеты на двух разных компьютерах, оборудованных wirehark.отслеживать вызовы сокетов Linux?

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

Я в точке, где мне нужно, чтобы понять, что происходит внизу стека вызовов. Есть ли способ отслеживать, что происходит?

Решение: проблема была связана с «адресом связывания», который библиотека вычисляла по умолчанию. Значение «0.0.0.0» не разрешено и не работает (по крайней мере, на Linux) без пауз.

ответ

4

Вы можете использовать strace, например.

$ strace -o logfile -e trace=network cmdline 
1

Я совершенно уверен, что это не то, что вы ожидаете, но могу помочь: Трассирования -f -F питона myscript.py

Трассирования сбросить системные вызовы общей программы.

+0

спасибо за вашу помощь - мое ожидание заключалось в обнаружении чего-то странного вокруг фактического системного вызова, но я не вижу ничего на трассе. Я не понимаю, почему пакет не появляется на проводе! – jldupont

0

Почему IPAD-адрес INADDR_ANY не работает? Это не должно. С моей точки зрения, что-то еще отсутствует в вашей картине. Что произойдет, если вы попытаетесь, за исключением блока кода, использовать (errno, string), чтобы получить более описательную ошибку msg.

Смежные вопросы