我有一个在后台运行的 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