程序卡住不响应,用 strace 看它停在哪一步系统调用

分两种情况。进程还在但毫无响应,直接挂上去看它停在哪:strace -p 加 -T 打印每次调用耗时、加 -f 跟住子线程。

屏幕上长时间停着不动的那个调用就是卡点,常见是 read 卡在网络、futex 卡在锁竞争。

而 epoll_wait 长时间返回只是空闲等待,不代表有问题。

进程已经起不来,就用 strace 从头跟一遍启动流程,看它死在哪次 open 或 connect。

strace -p <pid> -T -f -tt
strace -p <pid> -c -f        # 汇总各系统调用耗时排行
strace -f -tt -s 200 ./app   # 从头跟一遍启动过程
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容