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
, WARN
und 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.