调试PHP源码
缘由
有时候,我们想看看一个变量底层对应底层的数据结构或者PHP脚本是如何执行的,gdb就是这样一个好工具,之前有篇文章写过如何简单使用gdb。
本文环境:
- PHP版本:PHP 7.1.16 (cli) (built: Apr 8 2020 11:56:59) ( ZTS )
- OS:Ubuntu 18.04.4 LTS
- gdb: GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
静态链接库会在编译时包含到可执行文件中,这样的程序虽然没有依赖问题,但是可执行文件体积较大,包含相同的公共代码,非常浪费内存。
动态链接库的好处就是节省内存空间,还有将一些程序升级变得简单。用户只需要升级动态链接库,而无需重新编译链接其他原有的代码就可以完成整个程序的升级。
在windows下动态链接库是以.dll
后缀的文件,静态链接库是以.lib
的文件
而在Linux中,动态链接库是以.so
作后缀的文件,静态链接库是以.a
(archive的缩写)的文件。
本文中,我们的链接库来自于ftplib,这是一个用C语言实现的跨平台FTP库,我们将会用它生成的动态链接库写个简单的程序(连接ftp服务器,然后查询当前目录)。