[dpdk-dev] [PATCH] examples/distributor: fix missing "; " in debug macro

Stephen Hemminger stephen at networkplumber.org
Wed Jun 10 02:33:58 CEST 2015


On Mon, 8 Jun 2015 11:58:10 +0100
Bruce Richardson <bruce.richardson at intel.com> wrote:

> On Fri, Jun 05, 2015 at 10:45:04PM +0200, Thomas Monjalon wrote:
> > 2015-06-05 17:01, Bruce Richardson:
> > > The macro to turn on additional debug output when the app was compiled
> > > with "-DDEBUG" was missing a ";".
> > 
> > It shows that such dead code is almost never tested.
> > It would be saner if this command would return no result:
> > 	git grep 'ifdef.*DEBUG' examples
> > 		examples/distributor/main.c:#ifdef DEBUG
> > 		examples/l3fwd-acl/main.c:#ifdef L3FWDACL_DEBUG
> > 		examples/l3fwd-acl/main.c:#ifdef L3FWDACL_DEBUG
> > 		examples/l3fwd-acl/main.c:#ifdef L3FWDACL_DEBUG
> > 		examples/l3fwd-acl/main.c:#ifdef L3FWDACL_DEBUG
> > 		examples/packet_ordering/main.c:#ifdef DEBUG
> > 		examples/vhost/main.c:#ifdef DEBUG
> > 		examples/vhost/main.h:#ifdef DEBUG
> > 		examples/vhost_xen/main.c:#ifdef DEBUG
> > 		examples/vhost_xen/main.h:#ifdef DEBUG
> > 
> > There is no good reason to not use CONFIG_RTE_LOG_LEVEL to trigger debug build.
> > 
> I agree and disagree. 
> 
> I agree it would be good if we had a standard way of setting up
> a DEBUG build that would make it easier to test and pick up on this sort of things.
> 
> I disagree that the compile time log level is the way to do this. The log level
> at compile time specifies the default log level only, the actual log level is
> controllable at runtime. Having the default log level also affect what kind of
> build is done, e.g. with -O0 rather than -O3, introduces an unnecessary dependency.
> Setting the default log level to 5 and changing it to 9 at runtime should be
> the same as setting the default to 9.
> 
> /Bruce

One good way is to use something like:

#ifdef DEBUG
 #define LOG_DEBUG(log_type, fmt, args...) do {	\
-	RTE_LOG(DEBUG, log_type, fmt, ##args)		\
+	RTE_LOG(DEBUG, log_type, fmt, ##args);		\
 } while (0)
#else
#define LOG_LEVEL RTE_LOG_INFO
#define LOG_DEBUG(log_type, fmt, args...) if (0) {	\
	RTE_LOG(DEBUG, log_type, fmt, ##args);		\
 } else
#endif


More information about the dev mailing list