Debugging by old fashioned trace log printfs / writefln

Chris Katko ckatko at gmail.com
Thu Jun 29 23:54:45 UTC 2023


On Thursday, 29 June 2023 at 18:27:22 UTC, Cecil Ward wrote:
> I’m trying to debug my D program with old-fashioned printfs 
> stuck in various strategic places, actually using writefln(). 
> My problem is that the addition of printf fights with the 
> existing declarations for pure nothrow @nogc @safe and I have 
> to adjust them, then put them back correctly when the 
> writefln() trace statements are later removed.
>
> Is there something else I could be using, something that is 
> allowed to violate the checking rules for purity, nothrow, 
> @nogc? Would pragma( msg, "…" ) do the trick? Is that what I 
> should be using?

pragma(msg, "") is only for compile time. It for debugging 
functions/templates if they're actually used (which static path 
is used), instantiated, and you can also get type values from 
template inputs to confirm they're what you expect. "Oh this is a 
char[][] not a char[]!"

pragmas are the D equivalent of C/C++ pragmas. In this case, 
C/C++:
```C
#pragma message( message-string )
```



More information about the Digitalmars-d-learn mailing list