Re: how to debug a php script ( the C code beneath it)
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 <[email protected]>
To: Rasmus Lerdorf <[email protected]>
Cc: Adi Mutu <[email protected]>; PHP Developers Mailing List
<[email protected]>
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 <[email protected]> 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
Thread (11 messages)