Bitcoin-Core-Development
我應該嘗試在 MacOS 上進行模糊測試,還是應該堅持使用 Linux?
比特幣核心模糊測試文件包含一些在 MacOS 上進行模糊測試的提示。但是,如果我可以訪問 Linux 機器/VM,我是否應該堅持在 Linux 上進行所有 fuzzing?我假設人們在不同的作業系統上進行模糊測試對整個項目沒有什麼好處(除了擴大對比特幣核心進行模糊測試的人數)。
如果您可以訪問 Linux 機器/VM,您可能應該對它而不是 MacOS 進行模糊測試。您可能需要在 MacOS 上進行更多故障排除。然而,在這個關於模糊測試的比特幣核心公關評論俱樂部會議期間,人們已經開始在 MacOS上進行模糊測試,例如機器人夢想:
通過遵循“libFuzzer 的 macOS 提示”,我能夠讓事情正常進行,但我必須
--disable-asm
在執行時刪除該標誌./configure
此外,brakmic為那些試圖在 MacOS 上設置的人提供了一些額外的指導:
- 注意擁有一個包含模糊測試庫的 LLVM/Clang 環境。Apple 提供的預設版本是不夠的,因此您必須使用 brew 安裝它(如果尚未安裝)。
- 執行 ./configure 時,您應該輸入 –disable-asm 以避免比特幣核心程式碼中的某些彙編程式碼出錯。這裡有一個關於它的條目,它似乎與你必須為模糊測試編譯的消毒劑有關。
- 注意為 clang 和 clang++ 提供正確的路徑,例如 CC=/path/to/clang CXX=/path/to/clang++
- 如果您遇到“boost sleep”問題或找不到某些 boost 庫,例如 boost.thread 或 boost.filesystem,請將其添加到您的配置中:
CXXFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk"
注意:我使用的是 Catalina 10.15.1,所以你的 SDK 可能不同,你應該相應地調整路徑。這是我的完整配置,以防萬一。
./configure --disable-ccache --enable-fuzz --with-sanitizers=fuzzer,address,undefined --with-boost CPPFLAGS="-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" CXXFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ LDFLAGS="-L/usr/local/lib/darwin/" --disable-asm
關於整個比特幣核心項目的好處,我想說最大的好處是盡快讓各種模糊 PR 的模糊測試人員和審查員入職。單元測試和功能測試需要在各種作業系統上通過,但模糊測試的最終目的是檢查邊緣情況,其中大部分情況不依賴於作業系統。因此,任何能讓您以最快速度啟動和執行的方法都是最佳方法。