On Sun, Sep 13, 2015 at 03:24:13AM +0200, François Laupretre wrote:
> Hi Bob,
>
> Le 13/09/2015 00:44, Bob Weinand a écrit :
> >While I don't disagree with the idea of making accidental direct access 
> >harder, I see a particular disadvantage for debugging.
> >
> >Nobody will like to write "p 
> >fbc->op_array.filename->zstrict_field_zend_string_val" (I hope I got it 
> >right?) just to figure out where the targeted op_array is located. [At least 
> >lldb only shows one character of the value when just printing the 
> >zend_string, due to the struct hack...]
> >Now you may say macro? Well, honestly, I don't usually use macros (as 
> >.gdbinit isn't compatible with lldb and lldb is more stable than gdb on OS X)
> >
> >While it brings a minor guarantee that the ZSTR_*() API is really used, it 
> >makes debugging much harder; so I prefer to not merge this patch.
>
> I was probably not clear enough : you will *never* debug code
> configured/compiled in zstrict mode. This mode is reserved for compile-time
> checks only. Once you have checked that everything compiles fine in zstrict
> mode, the next step is to 'make clean' and throw the compilation result
> away. You can 'make test' before, if you want, but you will never distribute
> nor debug code compiled in zstrict mode.
>
> The same with travis: the zstrict flag can be set only because the resulting
> code will never be distributed nor used for debugging.
>
> So, there's no question of debug macro nor .gdbinit. When debugging your
> code, you'll keep using the usual field names (fbc->op_array.filename->val
> for instance).
>
> Regards
>
> François
>
That sounds good to me!

That would double build times though, is that going to be a concern?
This won't hurt development time though, since you would dev in zstrict,
and then switch to non-zstrict when running/testing?

A +1 for me would be to find a helpful way to tell extension
developers what the 'proper form' would be. So if I do a
(zend_string *) foo->val I would be hinted to the proper API.

Another +1 would be warnings for an entire code base, hopefully the
build doesn't just bail on the first error/file a lot of 'bug fixing'
development depends on stuff like syntastic.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to