原文链接:https://blog.csdn.net/a600423444/article/details/12720543
本文仅是对原文的一些错误及一些过时的信息加以修正,比如原文是针对VS2012,本文是按VS2015进行修正等,其他内容由于基本一致,就直接拷贝过来了。
一、搭建Windows的PHP扩展开发环境
推荐文章:https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2
上文详细介绍了不同PHP版本的搭建方法。
二、配置调试环境
1.下载PHP_DEBUG_PACK文件:https://windows.php.net/download/#php-7.1
选择时,PHP大部分版本都是32位的,所以选x86就可以了,注意必须与下载的PHP二进制版本相同,例如你在第一步搭建PHP开发环境时,选择的是VC9 x86 Non Thread Safe,那么DEBUG PACK就应该下载相同版本的DEBUG PACK。
2.引入符号文件
Debug pack压缩包里是所有PHP调试相关的符号文件(*.pdb),引入他们是调试的关键。
调试-》选项-》调试-》符号-》将解压路径添加入符号位置
3.扩展开启DEBUG信息
项目-》属性-》链接器-》调试-》生成调试信息-》设置为“优化以便于调试(/DEBUG)”
编译生成Release版本DLL时,会在Release目录生成一个pdb文件,再次进行第2步的操作,将这个pdb文件所在路径也添加进去
4、将Release目录的生成的dll文件拷贝到PHP拓展目录下,并在php.ini中加载这个拓展。
比如我的测试项目叫myext,则会生成myext.dll,将myext.dll拷贝到php的ext目录下,然后在php.ini文件中添加这个拓展:extension=myext.dll
三、附加到进程
1.写一段PHP脚本,并在cmd下运行,脚本的关键函数改成你自己的。
<?php
while(1){
sleep(30);
echo confirm_test_compiled('11');
}
2.添加断点位置
3.【调试】->【附加到进程】->找到进程名为【php.exe】的进程,附加进来
Over.
希望这篇文章,能够帮助像我一样刚刚接触PHP扩展的朋友们~。