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