`SBDebugger::InitializeWithErrorHandling` does not set the returned error as valid if it succeeds. The error is marked as success by default construction though. ``` $ cat test_api.cpp #include <iostream> #include "lldb/API/SBDebugger.h" #include "lldb/API/SBError.h" int main() { lldb::SBError err = lldb::SBDebugger::InitializeWithErrorHandling(); std::cout << "SBError validity: " << err.IsValid() << "\n"; std::cout << "SBError success: " << err.Success() << "\n"; std::cout << "SBError fail: " << err.Fail() << "\n"; if (err.IsValid() && !err.Success()) std::cout << "Error message: " << err.GetCString() << "\n"; return 0; } ``` ``` $ cat makefile all: g++ test_api.cpp -o test_api -I /home/david.spickett/llvm.install/include/ -L /home/david.spickett/llvm.install/lib/ -llldb run: LD_LIBRARY_PATH=/home/david.spickett/llvm.install/lib ./test_api ``` This produces: ``` $ make run LD_LIBRARY_PATH=/home/david.spickett/llvm.install/lib ./test_api SBError validity: 0 SBError success: 1 SBError fail: 0 ``` I would expect the SBError to be valid and marked as success.