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 调用),这是非常重要的一个参数 ```
';