Bitcoin-Core-Development

使用 gdb 調試比特幣核心 - 如何關閉編譯器優化

  • September 10, 2020

--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。

引用自:https://bitcoin.stackexchange.com/questions/81248