跳至主要內容

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 設定符號伺服器的更多資訊,請參閱使用符號伺服器除錯