メインコンテンツにスキップ

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();

これにより、呼び出しチェーンを観察し、潜在的な問題領域を特定できます。

ブレークポイントデバッグ

これはビルドのサイズを大幅に増加させ、約50Gのディスク容量を消費することに注意してください。

次のファイルを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のシンボルサーバーをセットアップする方法の詳細については、シンボルサーバーを使用したデバッグを参照してください。