================ @@ -173,6 +179,55 @@ ExceptionBreakpoint *DAP::GetExceptionBreakpoint(const lldb::break_id_t bp_id) { return nullptr; } +llvm::Error DAP::ConfigureIO(std::FILE *overrideOut, std::FILE *overrideErr) { + auto *inull = lldb_private::FileSystem::Instance().Fopen( + lldb_private::FileSystem::DEV_NULL, "w"); + in = lldb::SBFile(inull, true); + + if (auto Error = out.RedirectTo([this](llvm::StringRef output) { + SendOutput(OutputType::Stdout, output); + })) + return Error; + + if (overrideOut) { + auto fd = out.GetWriteFileDescriptor(); + if (auto Error = fd.takeError()) + return Error; + + if (dup2(*fd, fileno(overrideOut)) == -1) + return llvm::make_error<llvm::StringError>( + llvm::errnoAsErrorCode(), + llvm::formatv("override fd=%d failed", fileno(overrideOut)) ---------------- labath wrote:
```suggestion llvm::formatv("override fd={0} failed", fileno(overrideOut)) ``` `formatv` takes python-like replacement strings, but honestly, I'd probably just write this as `return errorCodeToError(llvm::errnoAsErrorCode())` https://github.com/llvm/llvm-project/pull/120457 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits