Как с помощью strace получить сетевые и последовательные вызовы?

Как с помощью strace получить сетевые и последовательные вызовы?

У меня есть программа на Python, которая работает в фоновом режиме. Для отладки мне нужно знать, какие вызовы она отправляет и получает для последовательного порта, сети и стандартного вывода.

Я знаю, что если я хочу увидеть stdout, мне нужен параметр "-e write", но как насчет остальных? И мне нужно, чтобы он выводил все 3 из одной команды, так как это будет частью консольного приложения, которое я создаю.

решение1

В общем случае сначала вы запустите программу straceбез нее -e(в конечном итоге на более мелкой/легкой программе с аналогичными операциями) и перенаправите stderr в файл, а затем загляните внутрь файла, чтобы выбрать минимальный набор -eнеобходимых вам параметров.

Для вашего конкретного случая я запустил его на wgetвызове (искал только сетевые данные) и определил, что следующие опции будут полезны: -e socket,connect,close,write,read(отбросьте, readесли вас не интересует принимающая сторона).

С этими параметрами straceдля сетевых вызовов отображается следующая информация:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("74.125.202.121")}, 16) = 0
write(4, "\26\3\1\0\302\1\0\0\276\3\1\374\2\223/\332\3545\34\2628u3-3hT\25s\"\310\215"..., 199) = 199
read(4, "\26\3\1\0]", 5)                = 5
read(4, "\2\0\0Y\3\1U\251X\245#\313\3544a\17\372\276\340^%\177y\270asQ\255^\7B\212"..., 93) = 93
...
close(4)                                = 0

Связанный контент