23 October 2017

环境说明

在本机,用的是 Mac 和 clion,每次开机都会开启一个 linux fedora 的虚拟机

php 和 swoole 都是在 linux 虚拟机里面编译运行的
Mac 上用 clion 的 remote gdb debug 功能来调试 linux 的 php 扩展程序

linux 配置

编译 php 和 swoole

➜ tar xf php-7.1.9.tar.xz
➜ cd php-7.1.9/
➜ ./configure --disable-all --enable-debug
➜ make -j8 && make install
➜ echo "extension=swoole.so" >> /usr/local/lib/php.ini
➜ cd path/to/swoole-src/
➜ ./configure --enable-swoole-debug --enable-debug
➜ make -j8 && make install
➜ php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini

➜  echo "extension=swoole.so" >> /usr/local/lib/php.ini
➜ php -m
[PHP Modules]
Core
date
pcre
Reflection
SPL
standard
swoole

开启 gdbserver

➜ dnf install -y gdbserver
➜ gdbserver :6666 /usr/local/bin/php /path/to/server.php

mac 配置

编译 linux gdb

➜ git clone git://sourceware.org/git/binutils-gdb.git
➜ ./configure --target=x86_64-linux-gnu --with-python --prefix=<install_dir>
➜ make -j8 && make install

clion 连接

开始调试

在 linux 开启监听 6666 端口

➜ gdbserver :6666 /usr/local/bin/php ./server.php

在 clion 上就可以设置断点 debug 了