[Lldb-commits] [lldb] [lldb-mcp] Auto connect to the first running lldb mcp instance. (PR #157503)
John Harrison via lldb-commits
lldb-commits at lists.llvm.org
Tue Sep 9 09:47:56 PDT 2025
================
@@ -53,33 +134,41 @@ int main(int argc, char *argv[]) {
assert(result);
#endif
- lldb::IOObjectSP input = std::make_shared<NativeFile>(
+ if (auto e = g_debugger_lifetime->Initialize(
+ std::make_unique<lldb_private::SystemInitializerCommon>(nullptr)))
+ error(std::move(e));
+
+ IOObjectSP input_sp = std::make_shared<NativeFile>(
fileno(stdin), File::eOpenOptionReadOnly, NativeFile::Unowned);
- lldb::IOObjectSP output = std::make_shared<NativeFile>(
+ IOObjectSP output_sp = std::make_shared<NativeFile>(
fileno(stdout), File::eOpenOptionWriteOnly, NativeFile::Unowned);
- constexpr llvm::StringLiteral client_name = "stdio";
static MainLoop loop;
- llvm::sys::SetInterruptFunction([]() {
+ sys::SetInterruptFunction([]() {
loop.AddPendingCallback(
[](MainLoopBase &loop) { loop.RequestTermination(); });
});
- auto transport_up = std::make_unique<lldb_protocol::mcp::Transport>(
- input, output, [&](llvm::StringRef message) {
- llvm::errs() << formatv("{0}: {1}", client_name, message) << '\n';
- });
+ auto existing_servers = ServerInfo::Load();
+
+ if (!existing_servers)
+ error(existing_servers.takeError());
+
+ // FIXME: Launch `lldb -o 'protocol start MCP'`.
+ if (existing_servers->empty())
+ error(createStringError("No MCP servers running"));
+
+ // FIXME: Support selecting a specific server.
+ if (existing_servers->size() != 1)
+ error(createStringError("To many MCP servers running, picking a specific "
+ "one is not yet implemented."));
- auto instance_up = std::make_unique<lldb_protocol::mcp::Server>(
- std::string(kName), std::string(kVersion), std::move(transport_up), loop);
+ ServerInfo &info = existing_servers->front();
+ connectAndForwardIO(loop, info, input_sp, output_sp);
- if (llvm::Error error = instance_up->Run()) {
- llvm::logAllUnhandledErrors(std::move(error), llvm::WithColor::error(),
- "MCP error: ");
- return EXIT_FAILURE;
- }
+ g_debugger_lifetime->Terminate();
----------------
ashgti wrote:
Done.
https://github.com/llvm/llvm-project/pull/157503
More information about the lldb-commits
mailing list