附录: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 打印每个系统调用的耗时

  • 谁伴我闯荡

    我针对swoole的主进程即Master进程使用strace -f -p,看到只监控到主进程的Reactor线程,并不包含主进程fork出来的子进程-Manager进程啊,所以这句话“如果不加-f参数,无法抓取到子进程和子线程的运行情况”是否不太妥当?

  • 勇闯天涯

    linux 系统的 strace 工具很实用,不错!