php源碼分析 (第一章)

環境

lsb_release -a

LSB Version:    :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch

Distributor ID: CentOS

Description:    CentOS release 5.6 (Final)

Release:        5.6

Codename:       Final

php:      5.2

gdb:      GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-37.el5_7.1)

下載php源碼編譯環境

svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_2 php-src-5.2

./buildconf

./configure --disable-all

make

開始gdb調試

gdb

(gdb) file sapi/cli/php

(gdb)run test.php       #這裏的test.php是隨便編寫的一個php文件

(gdb) list
612     /* }}} */
613
614     /* {{{ main
615      */
616     #ifdef PHP_CLI_WIN32_NO_CONSOLE
617     int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
618     #else
619     int main(int argc, char *argv[])
620     #endif
621     {
(gdb) b 617
Breakpoint 1 at 0x81c18f7: file /root/xiaoq/php-src-5.2/sapi/cli/php_cli.c, line 617.
(gdb) r
Starting program: /root/xiaoq/php-src-5.2/sapi/cli/php test.php
[Thread debugging using libthread_db enabled]

Breakpoint 1, main (argc=2, argv=0xbfffea84) at /root/xiaoq/php-src-5.2/sapi/cli/php_cli.c:621
621     {
(gdb) n
628             int orig_optind=php_optind;
(gdb)
622             volatile int exit_status = SUCCESS;

不會gdb的稍微學下,我也下的手冊剛看的,可以開始php源碼之旅了,下章分析下php的大體執行流程和關鍵的源碼位置,我也是初學者,不對之處多多指教!!!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章