Zum Hauptteil springen

Electron Debugging

There are many different approaches to debugging issues and bugs in Electron, many of which are platform specific.

Einige der weiter verbreiteten Ansätze sind im Folgenden dargestellt.

Generisches Debuggen

Chromium enthält Logging-Makros, die das Debuggen durch Ausgeben von Informationen auf die Konsole in C++ und Objective-C++ erleichtern können.

Damit können Sie unter anderem Variablenwerte, Funktionsnamen und Zeilennummern ausgeben.

Einige Beispiele:

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

LOG(INFO, bitmap.width() > 10) << "bitmap.width() ist größer als 10!";

Es gibt auch verschiedene Ebenen der Logging-Schwere: INFO, WARNund ERROR.

Siehe logging.h im Chromium-Quellbaum für weitere Informationen und Beispiele.

Stacktraces ausgeben

Chromium enthält einen Helfer, um Stacktraces auf die Konsole auszugeben, ohne das Programm zu unterbrechen.

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

So können Sie Call-Chains beobachten und mögliche Problembereiche ermitteln.

Breakpoint Debugging

Beachten Sie, dass dies die Größe des Builds erheblich vergrößert und etwa 50G Speicherplatz benötigt

Folgende Datei auf electron/.git/info/exclude/debug.gn schreiben

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

Dann ausführen:

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

Jetzt können Sie LLDB zum Debuggen mit Breakpoints verwenden.

Plattformspezifische Debugging

Debuggen mit dem Symbol Server

Debug-Symbole ermöglichen es Ihnen, bessere Debugging-Sitzungen zu haben. 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.