Example code:
remote_platform = lldb.SBPlatform("remote-macosx");
remote_platform.SetWorkingDirectory("/private/tmp")
debugger.SetSelectedPlatform(remote_platform)
connect_options = lldb.SBPlatformConnectOptions("connect://localhost:1111");
err = remote_platform.ConnectRemote(connect_options)
if err.Success():
print >> result, 'Connected to remote platform:'
print >> result, 'hostname: %s' % (remote_platform.GetHostname())
src = lldb.SBFileSpec("/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework", False)
dst = lldb.SBFileSpec()
# copy src to platform working directory since "dst" is empty
err = remote_platform.Install(src, dst);
if err.Success():
print >> result, '%s installed successfully' % (src)
else:
print >> result, 'error: failed to install "%s": %s' % (src, err)
Implemented many calls needed in lldb-platform to be able to install a directory that contains symlinks, file and directories.
The remote lldb-platform can now launch GDB servers on the remote system so that remote debugging can be spawned through the remote platform when connected to a remote platform.
The API in SBPlatform is subject to change and will be getting many new functions.
llvm-svn: 195273
125 lines
3.2 KiB
C++
125 lines
3.2 KiB
C++
//===-- StringExtractorGDBRemote.h ------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef utility_StringExtractorGDBRemote_h_
|
|
#define utility_StringExtractorGDBRemote_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
#include <string>
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "Utility/StringExtractor.h"
|
|
|
|
class StringExtractorGDBRemote : public StringExtractor
|
|
{
|
|
public:
|
|
|
|
StringExtractorGDBRemote() :
|
|
StringExtractor ()
|
|
{
|
|
}
|
|
|
|
StringExtractorGDBRemote(const char *cstr) :
|
|
StringExtractor (cstr)
|
|
{
|
|
}
|
|
StringExtractorGDBRemote(const StringExtractorGDBRemote& rhs) :
|
|
StringExtractor (rhs)
|
|
{
|
|
}
|
|
|
|
virtual ~StringExtractorGDBRemote()
|
|
{
|
|
}
|
|
|
|
enum ServerPacketType
|
|
{
|
|
eServerPacketType_nack = 0,
|
|
eServerPacketType_ack,
|
|
eServerPacketType_invalid,
|
|
eServerPacketType_unimplemented,
|
|
eServerPacketType_interrupt, // CTRL+c packet or "\x03"
|
|
eServerPacketType_A, // Program arguments packet
|
|
eServerPacketType_qfProcessInfo,
|
|
eServerPacketType_qsProcessInfo,
|
|
eServerPacketType_qC,
|
|
eServerPacketType_qGroupName,
|
|
eServerPacketType_qHostInfo,
|
|
eServerPacketType_qLaunchGDBServer,
|
|
eServerPacketType_qKillSpawnedProcess,
|
|
eServerPacketType_qLaunchSuccess,
|
|
eServerPacketType_qProcessInfoPID,
|
|
eServerPacketType_qSpeedTest,
|
|
eServerPacketType_qUserName,
|
|
eServerPacketType_qGetWorkingDir,
|
|
eServerPacketType_QEnvironment,
|
|
eServerPacketType_QLaunchArch,
|
|
eServerPacketType_QSetDisableASLR,
|
|
eServerPacketType_QSetSTDIN,
|
|
eServerPacketType_QSetSTDOUT,
|
|
eServerPacketType_QSetSTDERR,
|
|
eServerPacketType_QSetWorkingDir,
|
|
eServerPacketType_QStartNoAckMode,
|
|
eServerPacketType_qPlatform_shell,
|
|
eServerPacketType_qPlatform_mkdir,
|
|
eServerPacketType_qPlatform_chmod,
|
|
eServerPacketType_vFile_open,
|
|
eServerPacketType_vFile_close,
|
|
eServerPacketType_vFile_pread,
|
|
eServerPacketType_vFile_pwrite,
|
|
eServerPacketType_vFile_size,
|
|
eServerPacketType_vFile_mode,
|
|
eServerPacketType_vFile_exists,
|
|
eServerPacketType_vFile_md5,
|
|
eServerPacketType_vFile_stat,
|
|
eServerPacketType_vFile_symlink,
|
|
eServerPacketType_vFile_unlink
|
|
};
|
|
|
|
ServerPacketType
|
|
GetServerPacketType () const;
|
|
|
|
enum ResponseType
|
|
{
|
|
eUnsupported = 0,
|
|
eAck,
|
|
eNack,
|
|
eError,
|
|
eOK,
|
|
eResponse
|
|
};
|
|
|
|
ResponseType
|
|
GetResponseType () const;
|
|
|
|
bool
|
|
IsOKResponse() const;
|
|
|
|
bool
|
|
IsUnsupportedResponse() const;
|
|
|
|
bool
|
|
IsNormalResponse () const;
|
|
|
|
bool
|
|
IsErrorResponse() const;
|
|
|
|
// Returns zero if the packet isn't a EXX packet where XX are two hex
|
|
// digits. Otherwise the error encoded in XX is returned.
|
|
uint8_t
|
|
GetError();
|
|
|
|
size_t
|
|
GetEscapedBinaryData (std::string &str);
|
|
|
|
};
|
|
|
|
#endif // utility_StringExtractorGDBRemote_h_
|