[Mesa-dev] Let's talk about -DDEBUG

Rob Clark robdclark at gmail.com
Thu Dec 13 00:35:24 UTC 2018


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

BR.
-R

>
> Meson doesn't define NDEBUG by default, so if you want to turn off asserts you
> need to add -Db_ndebug=true
>
> autotools debug is roughly between meson's debugoptimized and debug, while
> autotools non-debug corresponds to meson's plain buildtype.
>
> Dylan


More information about the mesa-dev mailing list