strace 调试脚本
最后更新于:2022-04-02 03:49:40
[TOC]
> [参考](https://juejin.im/entry/5b31aa1bf265da597f1c81c0)
## 安装
`yum install strace`
## 实例
### `strace 可执行文件`
test.php
```
$file = "/var/log/data.log";
$fp = fopen($file, "a");
if ($fp) {
echo "start\n";
foreach ($log as $v) {
fwrite($fp, $v."\r\n");
}
}
fclose($fp);
```
`strace -o debug.log php test.php`
输出
```
lstat("/var/log/data.log", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
...
munmap(0x7f7aa7dfd000, 4096) = 0
close(0) = 0
```
脚本根本没有运行`fwrite($fp, $v."\r\n");`这段代码
### `strace -p (pid) -F` 查看运行 pid 的情况
```
> strace -p 29785 -F
-p 参数表示跟踪进程 PID 号
-F 表示过程该进程调用的子进程(如 PHP 执行 exec 调用),这是非常重要的一个参数
```
';