Yes, except if the target is set up to use a platform, “run” should launch the 
platform with some supplied args, then connect to it. Perhaps have platform 
args and target args; launch the platform with platform args, and pass target 
args to it to use when launching the inferior.

 

From: Todd Fiala [mailto:tfi...@google.com] 
Sent: Wednesday, September 17, 2014 9:58 AM
To: Ted Woodward
Cc: Zachary Turner; lldb-dev@cs.uiuc.edu
Subject: Re: [lldb-dev] Process spawning and shutdown

 

> I’d like to be able to have “run” be able to launch a supplied executable, 
> then connect to it via gdb-remote (or another protocol).

 

That sounds a lot like running an lldb-platform for a platform, and having the 
lldb-platform launch the stub.  That scenario sounds like it would map well to 
the 'platform select remote-{something}', 'platform connect 
connect://{remote-address}:{remote-port}' paradigm?

 

On Tue, Sep 16, 2014 at 1:59 PM, Ted Woodward <ted.woodw...@codeaurora.org> 
wrote:

I’d like to add another use case. On Hexagon, we talk to a simulator using 
gdb-remote. We hacked gdb to have “run” launch and connect to the simulator, 
and “start” do a “run”, then break at main and continue. I’ve implemented this 
in our lldb solution using python.

 

I’d like to be able to have “run” be able to launch a supplied executable, then 
connect to it via gdb-remote (or another protocol).

 

From: lldb-dev-boun...@cs.uiuc.edu [mailto:lldb-dev-boun...@cs.uiuc.edu] On 
Behalf Of Zachary Turner
Sent: Tuesday, September 16, 2014 3:26 PM
To: Todd Fiala
Cc: lldb-dev@cs.uiuc.edu
Subject: Re: [lldb-dev] Process spawning and shutdown

 

Sure, but debugserver still has to launch processes locally w/r/t itself, so 
this code would jsut be used there instead of in lldb.  Also, it's not clear 
what the timeline is and waiting would jsut be lost time, so even if some of 
what I do now has to be redone in the debugserver world, it's still better than 
being blocked now and not being able to do anything :)

 

On Tue, Sep 16, 2014 at 1:12 PM, Todd Fiala <tfi...@google.com> wrote:

> For now, the abstraction I'm creating deals only with local processes.  

 

For MacOSX, the local process uses debugserver for debugging (i.e. it is always 
remote w/r/t process startup --- lldb will launch and debugserver will attach).

 

Linux is moving this way as well once we (1) get llgs passing the local test 
suite with llgs in place of ProcessLinux/ProcessMonitor, and (2) get llgs 
supporting the existing set of ProcessLinux/ProcessMonitor cpu architectures.  
It will be on a PlatformLinux switch that defaults to current TOT behavior 
until then.  (See http://github.com/tfiala/lldb in the dev-llgs-local-launch 
branch for current state).

 

Not sure that affects anything but wanted to be clear on it.

 

On Tue, Sep 16, 2014 at 12:26 PM, Zachary Turner <ztur...@google.com> wrote:

Yea, I saw that as well.  For now, the abstraction I'm creating deals only with 
local processes.  However, it has an interface that would in theory allow a 
RemoteProcess to derive from it, so that local and remote processes could be 
managed transparently.

 

On Tue, Sep 16, 2014 at 12:07 PM, Todd Fiala <tfi...@google.com> wrote:

Don't forget we also have launching via Platform classes, which can end up 
kicking off a gdb-remote request to a lldb-platform or gdb-remote stub 
(llgs/debugserver).

 

Also, ProcessGDBRemote is capable of kicking those off if it's using gdb-remote 
locally.

 

So, if nothing else, there's the concept of a "launch via another mechanism."

 

On Tue, Sep 16, 2014 at 11:55 AM, Zachary Turner <ztur...@google.com> wrote:

The last major piece of the Host layer I'd like to address is process launching 
and cleanup.  From looking over the code it seems we have the following 
different ways to launch a process:

 

MacOSX:

    * Applescript

    * XPC

    * posix_spawn

 

Other posix variants:

    * posix_spawn

 

Windows:

    * Native windows launcher

 

 

Among these, there are a couple of different ways to reap processes on exit 
and/or "join" on them.  These are:

 

MacOSX:

    * Applescript    [ No process reaping or monitoring occurs. ]

    * XPC               [ Uses MacOSX-specific dispatch library for monitoring ]

    * posix_spawn [ Uses MacOSX-specific dispatch library for monitoring ]

 

Other posix variants:

    * posix_spawn   [ Launches a background thread to monitor for process exit, 
join on the thread to join on the process ]

 

Windows:

    * Native windows launcher  [ WaitForSingleObject ]

 

A few questions: 

 

1) Is Join() on a process a useful operation that people would be interested in 
seeing implemented for all platforms?

 

2) On Linux at least, if you don't waitpid() on a process you'll end up with 
zombies.  It seems this is true on MacOSX as well, because I see waitpid() in 
StartMonitoringChildProcess.  Is this not true for the Applescript launcher?  
Why doesn't the Applescript launching code path call 
StartMonitoringChildProcess() anywhere?

 

3) Speaking of the Applescript launcher, what is it and what is it used for?

 

 

I'll probably have more questions as I wrap my head around this a little more.  
Thanks

 

_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev





 

-- 


Todd Fiala |

 Software Engineer |

  <mailto:tfi...@google.com> tfi...@google.com |

 650-943-3180

 

 





 

-- 


Todd Fiala |

 Software Engineer |

  <mailto:tfi...@google.com> tfi...@google.com |

 650-943-3180

 

 





 

-- 


Todd Fiala |

 Software Engineer |

  <mailto:tfi...@google.com> tfi...@google.com |

 650-943-3180

 

_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to