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

Brady Eidson beidson at apple.com
Thu Jul 19 11:03:20 PDT 2012


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20120719/8b249745/attachment-0001.html>


More information about the webkit-dev mailing list