如何打开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)