Використовуючи strace, як я можу використовувати його для отримання мережевих і послідовних викликів


1

У мене є Python програма, яка працює у фоновому режимі, що мені потрібно знати для налагодження призначення є те, що мені потрібно, щоб побачити, що виклики це відправляти і отримувати для послідовного, мережі і stdout.

Я знаю, що якщо я хочу побачити stdout, мені потрібен параметр "-e write", але як щодо інших? І мені це потрібно, щоб вивести всі три з них з однієї команди, оскільки вона буде частиною консольного додатка, яке я роблю.

Відповіді:


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.