附录:strace工具的使用
strace可以跟踪系统调用的执行情况,在程序发生问题后,可以用strace分析和跟踪问题。使用方法:
FreeBSD/MacOS下可以使用truss
strace -o /tmp/strace.log -f -p $PID
- -f 表示跟踪多线程和多进程,如果不加-f参数,无法抓取到子进程和子线程的运行情况
- -o 表示将结果输出到一个文件中
- -p $PID,指定跟踪的进程ID,通过ps aux可以看到
- -tt 打印系统调用发生的时间,精确到微妙
- -s 限定字符串打印的长度,如recvfrom系统调用收到的数据,默认只打印32字节
- -c 实时统计每个系统调用的耗时
- -T 打印每个系统调用的耗时