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)

### Chromium libcef 使用指南和常见问题解决方案 #### 了解 CEF 和 libcef.dll 文件的作用 Chromium Embedded Framework (CEF) 是一个开源框架,允许开发者在其应用程序中嵌入 Chromium 浏览器引擎[^1]。`libcef.dll`作为 CEF 的核心组件之一,在应用启动过程中负责初始化并管理 Chromium 引擎实例。 #### 安装与配置开发环境 为了顺利使用 CEF 进行开发工作,建议按照官方文档指引完成必要的依赖项安装以及编译设置: - 配置 Visual Studio 或其他 IDE 支持 C++ 编程语言特性; - 将 `include`, `lib` 子文件夹路径添加至工程属性中的附加包含/库目录列表里; ```cpp #include <include/cef_app.h> #pragma comment(lib, "path_to_lib/libcef.lib") ``` #### 初始化 CEF 实例 在主程序入口处调用 `CefExecuteProcess()` 函数处理命令行参数,并通过创建自定义类继承于 `CefApp` 来实现特定需求逻辑。之后再执行 `CefInitialize()` 方法正式开启会话连接。 ```cpp int main(int argc, char* argv[]) { int exit_code = CefExecuteProcess(argc, argv, nullptr); if (exit_code >= 0) return exit_code; CefMainArgs main_args; CefRefPtr<MyApplication> app(new MyApplication()); void* windows_sandbox_info = nullptr; // Windows only bool result = CefInitialize(main_args, settings_, app.get(), windows_sandbox_info); ... } ``` #### 解决常见的 libcef.dll 错误提示 针对可能出现的各种报错情况给出针对性措施如下表所示: | 错误描述 | 可能原因分析 | 推荐修复方案 | | --- | --- | ---| | `"找不到模块"` / `"无法定位程序输入点"` | 动态链接库缺失或不兼容 | 更新至最新稳定版 CEF 发布包重新部署资源文件 | | `"已损坏或不是有效的 Win32 应用"` | 系统架构不符(x86 vs x64) | 根据目标平台选择相应位数的应用分发渠道 | | `"缺少 MSVCP*.dll" 或者 ".NET Core runtime not found."` | 开发工具链未完全安装 | 补全 .NET Framework、Visual C++ Redistributable Package | #### 日志记录与调试技巧 启用详细的日志输出有助于快速定位潜在缺陷所在位置。可以通过修改配置选项来调整信息级别范围内的输出量级大小。 ```json { "log_severity": LOGSEVERITY_INFO, "log_file": "./debug.log" } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值