[TUHS] To NDEBUG or not to NDEBUG, that is the question

Clem Cole via TUHS tuhs at tuhs.org
Fri Oct 17 21:58:07 AEST 2025


Going >>without<< a PFD — dyslexia-R-me

Sent from a handheld expect more typos than usual


On Fri, Oct 17, 2025 at 7:56 AM Clem Cole <clemc at ccc.com> wrote:

> FWIW:  assertions are like a PFD (a.k.a. Personal floation device or life
> preserver).  Going with a PFD is never a good idea, particularly if you are
> in open waters, as you never know when you could accidentally get washed
> overboard.
>
> Sent from a handheld expect more typos than usual
>
>
> On Fri, Oct 17, 2025 at 7:42 AM Aharon Robbins via TUHS <tuhs at tuhs.org>
> wrote:
>
>> Hello All.
>>
>> A bit off-topic, perhaps, but thoughts from this crowd would be welcome.
>>
>> I just finished tracking down a bug in gawk that was only noticed
>> because the Windows port is built without -DNEBUG, causing assertions
>> (via assert(3)) to be included in the code.  The regular *nix build
>> defines NDEBUG, so that assertions are not included in the regular,
>> "production" build.
>>
>> Now, I can understand why assert() and NDEBUG work the way they do.
>> Particularly on the small PDP-11s on which C and Unix were developed,
>> it made sense to have a way to remove assertions from code that would
>> be installed for all users.
>>
>> However, I'm starting to wonder.  Are my habits from yesteryear (defining
>> NDEBUG by default) getting in the way of my being able (or users being
>> able) to find bugs and report them?  Should I remove the defining of
>> NDEBUG from the default build?  In particular, given the many orders of
>> magnitude increase in CPU and memory of modern systems, is it likely
>> that assertions won't really affect performance all that much?
>>
>> I'm starting to think that the answer is yes, it's time to remove
>> NDEBUG.  But I'm curious what the experienced developers here
>> might think.
>>
>> Much thanks,
>>
>> Arnold
>>
>


More information about the TUHS mailing list