跳到主要内容

Electron 调试

Electron 中有许多不同的方法来调试问题和错误,其中许多是平台特定的。

下面概述了一些更常见的方法。

通用调试

Chromium 包含日志宏,它们可以通过在 C++ 和 Objective-C++ 中向控制台打印信息来辅助调试。

您可以使用它来打印变量值、函数名、行号等信息。

一些示例

LOG(INFO) << "bitmap.width(): " << bitmap.width();

LOG(INFO, bitmap.width() > 10) << "bitmap.width() is greater than 10!";

日志级别也有不同:INFOWARNERROR

有关更多信息和示例,请参阅 Chromium 源码树中的 logging.h

打印堆栈跟踪

Chromium 包含一个辅助函数,可以在不中断程序的情况下向控制台打印堆栈跟踪。

#include "base/debug/stack_trace.h"
...
base::debug::StackTrace().Print();

这将允许您观察调用链并识别潜在的问题区域。

断点调试

请注意,这将显著增加构建体积,占用约 50GB 的磁盘空间

将以下文件写入 electron/.git/info/exclude/debug.gn

import("//electron/build/args/testing.gn")
is_debug = true
symbol_level = 2
forbid_non_component_debug_builds = false

然后执行

$ gn gen out/Debug --args="import(\"//electron/.git/info/exclude/debug.gn\") $GN_EXTRA_ARGS"
$ ninja -C out/Debug electron

现在你可以使用 LLDB 进行断点调试。

平台特定调试

使用符号服务器调试

调试符号可以帮助您进行更好的调试会话。它们包含可执行文件和动态库中函数的有关信息,并提供信息以获取干净的调用堆栈。符号服务器允许调试器自动加载正确的符号、二进制文件和源文件,而无需用户下载大型调试文件。

有关如何为 Electron 设置符号服务器的更多信息,请参阅使用符号服务器调试