phpビルトインサーバーで
Segmentation fault: 11
だと strace (linux) か dtruss (macos) で、追跡ですかねぇ...
php -S
を実行したターミナルとは、別のターミナルで、実行中のphpビルトインサーバーのプロセスID を調べます。(適当なphpがなかったので、Laravel ですが...)
$ ps ax | grep php
8963 ttys003 0:00.50 php artisan serve
8967 ttys003 0:00.02 /usr/local/bin/php -S 127.0.0.1:8000 /Users/name/Desktop/test02/server.php
8970 ttys004 0:00.00 grep php
先ほど調べた、php サーバのプロセスIDを指定して、dtruss を管理者権限で起動する。画面にログが出始めたら、php ビルトインサーバーの URL にアクセスして、で落ちる操作を行う。
$ sudo dtruss -p 8967
Password:
dtrace: system integrity protection is on, some features will not be available
SYSCALL(args) = return
select(0x8, 0x1092F062C, 0x1092F06AC, 0x0, 0x7FFF575B7DF8) = 0 0
dtrace: 21991 dynamic variable drops with non-empty dirty list
select(0x8, 0x1092F062C, 0x1092F06AC, 0x0, 0x7FFF575B7DF8) = 1 0
accept(0x7, 0x7FA36B8010C0, 0x7FFF575B7D94) = 8 0
fcntl(0x8, 0x3, 0x0) = 2 0
fcntl(0x8, 0x4, 0x6) = 0 0
recvfrom(0x8, 0x7FFF575B3D40, 0x3FFF) = -1 Err#35
select(0x9, 0x1092F062C, 0x1092F06AC, 0x0, 0x7FFF575B7DF8) = 1 0
recvfrom(0x8, 0x7FFF575B3D40, 0x3FFF) = 1760 0
stat64("/Users/user/Desktop/test02/public/\0", 0x7FFF575B3B90, 0x3FFF) = 0 0
stat64("/Users/user/Desktop/test02/public/index.php\0", 0x7FFF575B3B90, 0x3FFF) = 0 0
(以下略)
異常終了したらログを見て調査する。
おそらく、ログの量がかなり多くなると思うので sudo dtruss -p 8967 2>&1 >logfile1.txt
の様にリダイレクトしてファイルに保存しておく方が良いかもしれません。