Electron 除錯
在 Electron 中除錯問題和錯誤有多種不同的方法,其中許多方法是平台特定的。
以下概述了一些比較常見的方法。
通用除錯
Chromium 包含記錄巨集,可以藉由將資訊列印到 C++ 和 Objective-C++ 中的主控台來協助除錯。
您可以使用它來列印變數值、函式名稱和行號等資訊。
一些範例
LOG(INFO) << "bitmap.width(): " << bitmap.width();
LOG(INFO, bitmap.width() > 10) << "bitmap.width() is greater than 10!";
還有不同的記錄嚴重性級別:INFO
、WARN
和 ERROR
。
請參閱 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 設定符號伺服器的更多資訊,請參閱使用符號伺服器除錯。