tMC*_*tMC 4 linux debugging strace
是否有一个简单的工具,或者可能是一种将 strace 输出转换为可以可视化或更容易筛选的东西的方法?我必须找出应用程序出错的地方,但跟踪它会产生大量数据。试图在更大范围内跟踪此应用程序及其线程正在执行(或尝试执行)的操作被证明很难读取每个系统调用。
我没有任何预算,我们是一家纯粹的 Linux 商店。
是的,使用-c参数来可视化每个系统调用的计数时间、调用和错误,并以表格形式报告摘要,例如
$ strace -c -fp $(pgrep -n php)
Process 11208 attached
^CProcess 11208 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
83.78 0.112292 57 1953 152 stat
7.80 0.010454 56 188 lstat
7.79 0.010439 28 376 access
0.44 0.000584 0 5342 32 recvfrom
0.15 0.000203 0 3985 sendto
0.04 0.000052 0 27184 gettimeofday
0.00 0.000000 0 6 write
0.00 0.000000 0 3888 poll
------ ----------- ----------- --------- --------- ----------------
100.00 0.134024 42922 184 total
Run Code Online (Sandbox Code Playgroud)
这将无需分析大量数据即可识别问题。
另一种方法是通过特定的系统调用(例如recvfrom/ sendto)进行过滤,以可视化接收和发送的数据,示例调试 PHP 进程:
strace -e recvfrom,sendto -fp $(pgrep -n php) -s 1000 2>&1 | while read -r line; do
printf "%b" $line;
done | strings
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2592 次 |
| 最近记录: |