//===-- PlatformAndroidRemoteGDBServer.h ------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef liblldb_PlatformAndroidRemoteGDBServer_h_ #define liblldb_PlatformAndroidRemoteGDBServer_h_ // C Includes // C++ Includes #include #include // Other libraries and framework includes // Project includes #include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h" #include "llvm/ADT/Optional.h" #include "AdbClient.h" namespace lldb_private { namespace platform_android { class PlatformAndroidRemoteGDBServer : public platform_gdb_server::PlatformRemoteGDBServer { public: PlatformAndroidRemoteGDBServer(); ~PlatformAndroidRemoteGDBServer() override; Error ConnectRemote(Args &args) override; Error DisconnectRemote() override; lldb::ProcessSP ConnectProcess(const char *connect_url, const char *plugin_name, lldb_private::Debugger &debugger, lldb_private::Target *target, lldb_private::Error &error) override; protected: std::string m_device_id; std::map m_port_forwards; llvm::Optional m_socket_namespace; bool LaunchGDBServer(lldb::pid_t &pid, std::string &connect_url) override; bool KillSpawnedProcess(lldb::pid_t pid) override; void DeleteForwardPort(lldb::pid_t pid); Error MakeConnectURL(const lldb::pid_t pid, const uint16_t remote_port, const char *remote_socket_name, std::string &connect_url); private: DISALLOW_COPY_AND_ASSIGN(PlatformAndroidRemoteGDBServer); }; } // namespace platform_android } // namespace lldb_private #endif // liblldb_PlatformAndroidRemoteGDBServer_h_