[lldb-dev] Linux process plugin

Greg Clayton gclayton at apple.com
Tue Sep 28 08:22:25 PDT 2010

On Sep 28, 2010, at 4:42 AM, arvid.picciani at nokia.com wrote:

> I think,I need some help getting the linux process plugin working. Getting it compiling was easy so far, but it won't work, 
> and for me its not easy too see how its supposed to work either.
> First of all, why does it run the inferior in a pty? I don't see why we would need an entire terminal there.

On MacOSX we hand a pty to our inferior using posix_spawn file attributes and we run a single read thread to watch for the input. We use a pty by default to stay as close to what would be run in a terminal. You can specify the file handles you want the inferior to use in process launch:

process launch --stdin /dev/null --stdout /dev/null --stderr /dev/null ....

> Secondly, why is there one thread per fd afterwards?

Not sure why linux would be running three threads.

> Basicly it does pretty much nothing:
> (lldb) r
> Launching '/tmp/crashd/a.out'  (x86_64)
> (lldb) 
> it randomly works after a few times, but only results in a visible effect when the inferior crashes.
> It then tries to send a message to the crashed process, which crashes lldb. There is a FIXME in there, 
> but why is this on a seperate thread in the first place?

Eli Friedman was the person leading the linux port, so I will have to defer linux questions to him.

I believe the linux plug-in also needs to get a DynamicLoader plug-in created for it at some point so that shared library loads/unloads can be detected and breakpoints in shared libraries will work.

You can see all of the logging that you can enable:

(lldb) log list

Each plug-in that is installed can install named logged channels that can have multiple categories. 

There is a lot of internal logging you can enable to see what might be going on:

(lldb) log enable lldb default

Then try and run and see if you see anything obvious. The linux plug-in should add its own logging channel so the details of the debug session can be logged when things go wrong.

Greg Clayton

More information about the lldb-dev mailing list