跳到主要內容

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