[lldb-dev] Better error message for attaching to a process already being debugged

Jeffrey Tan via lldb-dev lldb-dev at lists.llvm.org
Wed Mar 9 18:19:12 PST 2016


Thanks for the info Jim. That answers my questions. I will file a bug for
lldb error message.

On Wed, Mar 9, 2016 at 5:57 PM, Jim Ingham <jingham at apple.com> wrote:

>
> > On Mar 9, 2016, at 3:04 PM, Jeffrey Tan via lldb-dev <
> lldb-dev at lists.llvm.org> wrote:
> >
> > Hi,
> >
> > My colleague is trying to use our lldb IDE attaching to app run/build
> from Xcode which failed. I can reproduce this with lldb console:
> >
> > jeffreytan-mbp:$ ps aux | grep iOSApp
> > jeffreytan      61816   0.0  0.0  2432772    676 s002  S+    3:00PM
>  0:00.00 grep iOSApp
> > jeffreytan      61806   0.0  0.2  2721120  38600   ??  SXs   3:00PM
>  0:00.24
> /Users/jeffreytan/Library/Developer/CoreSimulator/Devices/EF17E202-3981-4DB0-87C9-2A9345C1E713/data/Containers/Bundle/Application/CAEBA7D7-D284-4489-8A53-A88E56F9BB04/iOSAppTest.app/iOSAppTest
> > jeffreytan-mbp:$ lldb -p 61806
> > (lldb) process attach --pid 61806
> > error: attach failed: attach failed: unable to attach
> >
> > My theory is:
> > 1. Xcode does not have the concept of run without debugger and run under
> debugger, so it always run app with debugger enabled.(Is this true?)
>
> That is not true.  In the Run Scheme, uncheck the "Debug Executable"
> checkbox.  But running with the debugger is the default.
>
> Note, an X in the status field for ps means the app is being debugged.  So
> in this case, the app you were trying to attach to WAS already being
> debugged.
>
> > 2. And you can't have two native debuggers debugging the same process on
> Mac(this is true on Windows, is it true for Mac or Linux?)
>
> That is true for Mac, and in general for ptrace based debugging.  I don't
> know much about procfs.
>
> >
> > If both are true, can we report meaningful message like "inferior is
> already being debugged" or something similar instead of the generic error
> message like "attach failed: unable to attach"?
>
> That should be possible, there's code to eliminate already debugged
> processes in the "Attach to process by name" functionality.  So if you
> specify a PID and the attach fails, we could check after the fact and see
> if it is already being traced.  Please file a bug for this, and/or take a
> whack at fixing it if you feel like it.
>
> >
> > Btw: I found I can still use gdb to attach to the process(with a
> permission elevation dialog pop-up) and see the callstack. How does gdb do
> that?
>
> I haven't looked at the FSF gdb OS X support for years, so I can't really
> comment on it.  But it is not possible to ptrace something that is already
> ptraced, so if gdb is still doing it this way, then it should also fail.
> Maybe it is only getting the mach task and exception ports and debugging
> just with them?  You can have multiple readers for the task port, and you
> can steal the exception port from someone else.  But if it did that, the
> other debugger should stop working.
>
> Jim
>
>
> >
> > Jeffrey
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160309/a7ca82de/attachment.html>


More information about the lldb-dev mailing list