Bitcoin-Core-Development
使用 gdb 調試比特幣核心 - 如何關閉編譯器優化
--enable-debug
我執行帶有標誌的配置腳本,然後執行make
. 我正在執行單元測試:
gdb --args src/test/test_bitcoin --log_level=all --run_test=script_standard_tests
我正在嘗試使用 gdb 逐步執行源文件,但我仍然得到
<optimized out>
許多變數,並且它在這里和那裡跳過行。我以為--enable-debug
標誌會關閉優化,但我錯了嗎?我想知道測試的優化是否始終處於開啟狀態,或者是否有辦法將其關閉。
比特幣核心在設置時禁用
-O2
和啟用。用於調試;但是,它刪除了一些調試資訊並且是錯誤的。要禁用它並改善調試體驗,我建議在 L256 和 L278 之間更改為:-Og``--enable-debug``-Og
CXXFLAGS="-ggdb3 -ftrapv"
-ggdb3
比 更強大-g3
,它使用 GDB-only、LLDB 不兼容的方言進行調試。這也將擺脫-O2
.libsecp256k1 除外。編輯:Sipa 提出了一種更優雅的方式,無需更改 autoconf 文件,即添加用於配置的 args。
./configure CXXFLAGS="-O0 -ggdb3"
在這種情況下需要 O0。