跳转到主内容

Electron Debugging

Electron 中有许多不同的方法来调试问题和错误,其中许多方式是根据平台来选择的。

Some of the more common approaches are outlined below.

Generic Debugging

Chromium contains logging macros which can aid debugging by printing information to console in C++ and Objective-C++.

You might use this to print out variable values, function names, and line numbers, amonst other things.

Some examples:

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

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

There are also different levels of logging severity: INFO, WARN, and ERROR.

See logging.h in Chromium's source tree for more information and examples.

Printing Stacktraces

Chromium contains a helper to print stack traces to console without interrrupting the program.

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

This will allow you to observe call chains and identify potential issue areas.

Breakpoint Debugging

Note that this will increase the size of the build significantly, taking up around 50G of disk space

Write the following file to electron/.git/info/exclude/debug.gn

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

Then execute:

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

Now you can use LLDB for breakpoint debugging.

Platform-Specific Debugging

Debugging with the Symbol Server

调试 symbols 让你能更好的调试 sessions. They have information about the functions contained in executables and dynamic libraries and provide you with information to get clean call stacks. A Symbol Server allows the debugger to load the correct symbols, binaries and sources automatically without forcing users to download large debugging files.

For more information about how to set up a symbol server for Electron, see debugging with a symbol server.