[lldb-dev] Process spawning and shutdown
Todd Fiala
tfiala at google.com
Wed Sep 17 07:57:52 PDT 2014
> 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.woodward at 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-bounces at cs.uiuc.edu [mailto:lldb-dev-bounces at cs.uiuc.edu]
> *On Behalf Of *Zachary Turner
> *Sent:* Tuesday, September 16, 2014 3:26 PM
> *To:* Todd Fiala
> *Cc:* lldb-dev at 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 <tfiala at 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 <zturner at 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 <tfiala at 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 <zturner at 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 at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>
>
>
>
>
> --
>
> Todd Fiala |
>
> Software Engineer |
>
> tfiala at google.com |
>
> 650-943-3180
>
>
>
>
>
>
>
>
>
> --
>
> Todd Fiala |
>
> Software Engineer |
>
> tfiala at google.com |
>
> 650-943-3180
>
>
>
>
>
--
Todd Fiala | Software Engineer | tfiala at google.com | 650-943-3180
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140917/544904c3/attachment.html>
More information about the lldb-dev
mailing list