strace -e trace =仅显示SIGCHLD的网络?

时间:2016-07-14 14:43:24

标签: linux sockets debugging strace

我正在使用命令:

  

strace -tt -o $ {filename} -e trace = network gdb --args $ {EXECUTABLE}

跟踪在连接到对等方并向对等方发送消息时发生的系统调用。但是,我只收到以下条目:

15:40:11.908857 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=5019, si_status=SIGSTOP, si_utime=0, si_stime=0} ---
15:40:11.911130 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=4987, si_status=SIGTRAP, si_utime=1, si_stime=0} ---
15:40:11.914907 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=4987, si_status=0, si_utime=1779, si_stime=180} ---
15:40:11.963586 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=4983, si_status=SIGTRAP, si_utime=37, si_stime=4} ---
15:40:11.973691 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=5019, si_status=SIGSTOP, si_utime=0, si_stime=0} ---
15:40:11.975929 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=4983, si_status=SIGTRAP, si_utime=37, si_stime=4} ---
15:40:11.979922 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=4983, si_status=0, si_utime=1816, si_stime=184} ---

我是否应该看到read() close()等的套接字调用?

1 个答案:

答案 0 :(得分:2)

使用带有gdb --args ${EXECUTABLE}的strace打印gdb的系统调用,而不是在gdb下运行的可执行文件的系统调用。

为了打印您的可执行文件的系统调用,您可以使用:

strace -f -tt -o ${filename} -e trace=network ${EXECUTABLE} 

' -f'选项要求strace to follow forks,这在可执行的fork新线程或新进程时很有用。