[webkit-dev] Easing printf based debugging in WebKit with an helper.

Filip Pizlo fpizlo at apple.com
Thu Jul 19 11:27:54 PDT 2012


I should note that WTF already has an API for this. See DataLog.h. In JSC we've been using it quite extensively to add pretty printers for a bunch of classes. 

-Filip

On Jul 19, 2012, at 11:03 AM, Brady Eidson <beidson at apple.com> wrote:

> 
> On Jul 19, 2012, at 10:53 AM, Andreas Kling <kling at webkit.org> wrote:
> 
>> On Tue, Jul 10, 2012 at 4:52 PM, Brady Eidson <beidson at apple.com> wrote:
>>> 
>>> On Jul 10, 2012, at 5:25 AM, Alexis Menard <alexis.menard at openbossa.org> wrote:
>>> 
>>> > On Mon, Jul 9, 2012 at 6:53 PM, Brady Eidson <beidson at apple.com> wrote:
>>> >>
>>> >> On Jul 9, 2012, at 2:43 PM, Alexis Menard <alexis.menard at openbossa.org> wrote:
>>> >>
>>> >>> Hi,
>>> >>>
>>> >>> For those who "secretly" use printf debugging :). I know the
>>> >>> recommended way is to use a debugger and it's not the point of this
>>> >>> discussion.
>>> >>
>>> >> A lot of us do this, and sometimes it's necessary.  I agree with the gripe and support adding something easier.
>>> >>
>>> >>> So I propose wtf() and its stream operator.
>>> >>>
>>> >>> Usage :
>>> >>>
>>> >>> wtf()<<"Hello"<<"World"<<3<<4.53322323; will output : Hello World 3 4.53322
>>> >>
>>> >> There is no reason to bring in stream operators - that are willfully absent from WebCore - just for debugging.
>>> >>
>>> >
>>> > But it's really nice for that purpose, and somehow match std::cout
>>> 
>>> And we quite purposefully don't use std::cout in the project.
>>> 
>>> >> Overloading functions works just as well.
>>> >
>>> > I'm not sure to understand what you mean here…
>>> 
>>> I mean relying on C++'s overloading of functions for the different types you'd like to printf debug.
>>> 
>>> void debug(WebCore::String&);
>>> void debug(WebCore::Frame*);
>>> void debug(WebCore::Node*);
>>> 
>>> etc etc etc.
>>> 
>>> debug(someFrame);
>>> debug(someNode);
>>> debug(someString);
>>> 
>>> Especially that last one would help me from remembering how to type "printf("%s", someString.utf8().data())" which is all I've ever really wanted.
>> 
>> Hello fellow printfers!
>> 
>> While I'm just as ashamed of my printf habits as the next guy, I think it'd be great if we could move forward with this somehow.
>> 
>> Coming from a background in Qt, the stream operator syntax looks perfectly normal to me, perhaps you could expand on why we want to avoid using these in WebKit. Is there a technical reason, or is it more of a language purity issue?
> 
> A possible technical reason - that I am 100% theorizing about - is that it might bring in more libraries at link time or runtime since it would be the absolute first use of stream operators in the project.
> 
> That possibility aside, the stronger part of my objection is language purity.  WebCore uses C++ as "C with classes" and I don't think it's worth it to confuse new (or existing) contributors about that going forward.
> 
>> Regardless, adding a consistent set of debug(WebCore::MyCoolOverload) methods as suggested would still be massively useful.
> 
> Definitely.
> 
> ~Brady
> 
>> 
>> -Kling
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo/webkit-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20120719/a746eedd/attachment.html>


More information about the webkit-dev mailing list