我有一個在後台運行的Python程序,我需要知道調試目的是我需要查看什麼調用它發送和接收串行、網絡和標準輸出。
我知道如果我想查看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