[RFC] Configure option to turn on all debug printerfy

Message ID CAEgOgz47W7fVJVbfO1xHkYwhbA8DnanDiFs7EvmMR064Vv6MDA@mail.gmail.com
State New
Headers show

Commit Message

Peter Crosthwaite Oct. 31, 2012, 4:13 a.m.
On Wed, Oct 31, 2012 at 1:22 PM, Andreas Färber <afaerber@suse.de> wrote:
> Am 31.10.2012 04:10, schrieb Peter Crosthwaite:
>> So in a couple of cases now I have done work on mature device models
>> that include #ifdef'd debug printfery that is broken, and have
>> submitted (trivial) patches to fix. Whats happening is tree wide or
>> automated changes (changing types of variables etc) is causing the
>> debug printfery to break, usually werror issues on %x in printfs due
>> to types. Issue is, it never gets detected until someone tries to use
>> the debug mode: ./configure --extra-cflags="-DFOO_DEBUG". Can we have
>> some sort of alternate symbol "ALL_DEBUG" or something, such that
>> every debug printf is compiled? Then when developers make tree wide
>> changes they can at least compile test for breakages in debug printfs
>> using ./configure --extra-cflags="-DALL_DEBUG"? It would be fairly
>> trivial to implement.
> The original idea I thought was to replace all the DPRINTFs by tracing...

Thats a much longer term goal isn't it? Also wont tracing have the
same problem, given that trace functionality is compiled on a per
module basis? Would need an ALL_TRACE.

> An alternative might be to change the definition from empty DPRINTF(...)
> to DPRINTF(...) if (0) { ... }.

Should work. Proof of concept diff below (untested).

Then no ALL_DEBUG symbol would be
> needed. I don't think anyone would like to get flooded with ALL_DEBUG!

So the idea is no one actually needs to run a QEMU built with
ALL_DEBUG. Just maintainers can compile test it for werror breakage.


> Regards,
> Andreas
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg


--- a/hw/pflash_cfi01.c
+++ b/hw/pflash_cfi01.c
@@ -50,13 +50,16 @@  do { \
 } while(0)

 /* #define PFLASH_DEBUG */
-#define DPRINTF(fmt, ...)                          \
+#define DO_DPRINTF(fmt, ...)                       \
 do {                                               \
     printf("PFLASH: " fmt , ## __VA_ARGS__);       \
 } while (0)
+#define DPRINTF(fmt, ...) DO_PRINTF(fmt,  ## __VA_ARGS__)
-#define DPRINTF(fmt, ...) do { } while (0)
+#define DPRINTF(fmt, ...) if(0) {                   \
+    DO_PRINTF(fmt,  ## __VA_ARGS__)                 \