chromium log相关

如何打开chromium里面的log?


我们看到代码里面很多LOG(),所以要先找到LOG的定义。

LOG定义在Assertions.h里面。LOG是由条件宏控制的


如果非debug版本,如下代码

#ifdef NDEBUG //release版本会定义NDEBUG=1
/* Disable ASSERT* macros in release mode. */
#define ASSERTIONS_DISABLED_DEFAULT 1
#else
#define ASSERTIONS_DISABLED_DEFAULT 0
#endif


LOG宏定义如下

/* LOG */

#if COMPILER(MSVC7_OR_LOWER)
#define LOG() ((void)0)
#elif COMPILER(WINSCW)
#define LOG(arg...) ((void)0)
#elif LOG_DISABLED
#define LOG(channel, ...) ((void)0)
#else
#define LOG(channel, ...) WTFLog(&JOIN_LOG_CHANNEL_WITH_PREFIX(LOG_CHANNEL_PREFIX, channel), __VA_ARGS__)
#define JOIN_LOG_CHANNEL_WITH_PREFIX(prefix, channel) JOIN_LOG_CHANNEL_WITH_PREFIX_LEVEL_2(prefix, channel)
#define JOIN_LOG_CHANNEL_WITH_PREFIX_LEVEL_2(prefix, channel) prefix ## channel
#endif


由于LOG_DISABLED就是1,LOG就是void


即使debug版本,LOG如果要输出,还需要打开channel。channel的打开需要命令行里面加上 "--webcore-log-channels",后跟要打开的channel

代码如下

WebKitThread::InternalWebKitThread::Init
	  webkit_glue::EnableWebCoreLogChannels(
      CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
          switches::kWebCoreLogChannels));


太麻烦了

在release版本里面,我们自己定义LOG吧

简单定义

#undef LOG
#define LOG(channel, ...) \
do { \
printf(__VA_ARGS__); \
printf("\n"); \
} while(0)

你可能感兴趣的:(webkit,macros)