Re: how to debug a php script ( the C code beneath it)

From: Date: Tue, 14 Feb 2012 17:51:07 +0000
Subject: Re: how to debug a php script ( the C code beneath it)
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-57878@lists.php.net to get a copy of this message
I know about the zif_* functions and i'm already using lxr.php.net. Didn't know about Gcc -e trick though, that might be usefull. Thanks. ________________________________ From: jpauli <jpauli@php.net> To: Rasmus Lerdorf <rasmus@php.net> Cc: Adi Mutu <adi_mutu06@yahoo.com>; PHP Developers Mailing List <internals@lists.php.net> Sent: Tuesday, February 14, 2012 7:36 PM Subject: Re: [PHP-DEV] how to debug a php script ( the C code beneath it) On Tue, Feb 14, 2012 at 6:28 PM, Rasmus Lerdorf <rasmus@php.net> wrote: > On 02/14/2012 09:22 AM, Adi Mutu wrote: > > Thanks Julien.... > > > > I don't know french, but i'll read it using google translate:) > > If you just want to see some of the function calls, most calls that are > visible in userspace are prefixed with "zif_" internally. > > eg. > > % gdb sapi/cli/php > GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08 > ... > (gdb) b zif_strlen > Breakpoint 1 at 0x7b2760: file > /home/rasmus/php-src/branches/PHP_5_3/Zend/zend_builtin_functions.c, > line 455. > (gdb) run -r 'echo strlen("123");' > Breakpoint 1, zif_strlen (ht=1, return_value=0x1200eb0, > return_value_ptr=0x0, this_ptr=0x0, return_value_used=1) >    at > /home/rasmus/php-src/branches/PHP_5_3/Zend/zend_builtin_functions.c:455 > 455    { > (gdb) l > 450 > 451 > 452    /* {{{ proto int strlen(string str) > 453        Get string length */ > 454    ZEND_FUNCTION(strlen) > 455    { > 456            char *s1; > 457            int s1_len; > > -Rasmus > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > Yeah, that's the PHP_FUNCTION() macro. 'zif' meaning "Zend Internal Function". One more step would be to read the preprocessed code (GCC -E), as PHP source heavily uses macros If you want, you can also read the source code online using the excellent http://lxr.php.net :) Julien.P

« previous php.internals (#57878) next »