[lldb-dev] difference between "platform process attach|launch" and "process attach|launch"

Greg Clayton gclayton at apple.com
Mon Jan 26 17:10:05 PST 2015


> On Jan 26, 2015, at 5:05 PM, Oleksiy Vyalov <ovyalov at google.com> wrote:
> 
> Thank you for quick response!
> 
> On Mon, Jan 26, 2015 at 4:32 PM, Greg Clayton <gclayton at apple.com> wrote:
> 
> > On Jan 26, 2015, at 3:28 PM, Oleksiy Vyalov <ovyalov at google.com> wrote:
> >
> > Hello,
> >
> > I'm trying to make TestProcessAttach to pass in case of remote platform. I see a few problems here:
> >       • lldbtest.spawnSubprocess should spawn a new process remotely (e.g., using A packet) when remote_platform is presented.
> >       • It seems "process attach" doesn't know about selected platform and tries to find a local process to attach - either by pid or name (I don't see qLaunchGDBServer requests in platform's gdb-remote logs).
> > The main question for me here - is it expected behavior that "process attach|launch" always work with local processes only regardless of selected platform? Or if it's not the case should we delegate Process::Attach call to Platform::Attach and Process::Launch to Platform::ProcessLaunch?
> > Or as minimal workaround make TestProcessAttach to use "platform process attach" command instead?
> 
> 
> Yes, use the "platform process attach" command, or better yet add new API to SBPlatform:
> 
>     SBProcess
>     SBPlatform::Launch (SBLaunchInfo &launch_info, SBError& error);
> 
>     SBProcess
>     SBPlatform::Attach (SBAttachInfo &attach_info, SBError& error);
> 
> 
> If it's okay I'd rather make tests to use "platform process attach/launch" commands for verification purposes and combination of SBPlatform::Launch/SBPlatform::Kill to start/stop any process on target.

Just know that the current GDB remote based platform will only allow you to kill processes that you launched through it as a security measure.

Greg





More information about the lldb-dev mailing list