[Mesa-dev] Let's talk about -DDEBUG
Marek Olšák
maraeo at gmail.com
Thu Dec 13 00:45:06 UTC 2018
On Wed, Dec 12, 2018 at 7:35 PM Rob Clark <robdclark at gmail.com> wrote:
> On Wed, Dec 12, 2018 at 7:14 PM Dylan Baker <dylan at pnwbakers.com> wrote:
> >
> > Quoting Rob Clark (2018-12-12 15:52:47)
> > > On Wed, Dec 12, 2018 at 6:25 PM Dylan Baker <dylan at pnwbakers.com>
> wrote:
> > > >
> > > > In the autotools discussion I've come to realize that we also need
> to talk about
> > > > the -DDEBUG guard. It seems that there are two different uses, and
> thus two
> > > > different asks about it:
> > > >
> > > > - Nine (and RadeonSI?) use -DDEBUG to hide generic debugging
> > > > - NIR and Intel (at least) use -DDEBUG to hide really expensive
> checks that are
> > > > useful, but necessarily tank performance.
> > > >
> > > > The first group would like -DDEBUG in debugoptimized builds, the
> second
> > > > obviously doesn't.
> > > >
> > > > Is the right solution to move the first group being !NDEBUG, or
> would it be
> > > > better to split DEBUG into two different defines such as
> DEBUG_MESSAGES and
> > > > EXPENSIVE_VALIDATION (paint the bikeshed whatever color you like),
> with the
> > > > first for both debug and debugoptimized and the second only in debug
> builds?
> > >
> > > I guess my use cases for !=release builds are:
> > >
> > > + I want all the expensive checking because I'm not in it to win the
> > > deqp/piglit fps race
> > > + I want debug syms for profiling and/or valgrind, but otherwise
> > > want something close to a release build but with debug syms
> > >
> > >
> > > That said, I can get behind replacing DEBUG with !NDEBUG or
> > > EXPENSIVE_DEBUG or whatever permutation of that color folks prefer
> > >
> > >
> > > BR,
> > > -R
> >
> > I guess I should have covered that:
> >
> > autotools had effectively two build types "debug" and "not debug",
> "debug" set
> > "-DDEBUG -g -O2", "not debug" set -DNDEBUG
> >
> > Meson has 4 build types, and a separate toggle for NDEBUG:
> > debug: -O0 -DDEBUG (we add -DDEBUG)
> > debugoptimzed: -O2 -g
> > release: -O2
> > plain: (nothing)
>
> I generally view meson as an upgrade in this respect, I guess mostly
> because I have no use for '-DDEBUG -g -O2' (ie. the -O0 equiv is fine
> by me).. maybe making meson debug config use -O2 would bridge the gap?
> If so I have no problem with dropping -O0 and making debug config
> also use -O2
>
Sounds good.
Also I think we should make -Db_ndebug=true the default for release builds.
!NDEBUG enables a lot more debugging code than just assertions.
Marek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181212/04341e85/attachment.html>
More information about the mesa-dev
mailing list