我使用的命令是:
strace -tt -o ${filename} -e trace=network gdb --args ${可执行}
跟踪在连接到对等点并向其发送消息时发生的系统调用。不过,我只收到以下的参赛作品:
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()等的套接字调用吗?
发布于 2016-07-14 16:51:26
使用strace与gdb --args ${EXECUTABLE}一起打印gdb的syscall,而不是在gdb下运行的syscall可执行文件。
为了打印syscall的可执行文件,您可以使用:
strace -f -tt -o ${filename} -e trace=network ${EXECUTABLE} '-f‘选项要求串接分叉,这在可执行的叉新线程或新进程时非常有用。
https://stackoverflow.com/questions/38377246
复制相似问题