[lldb-dev] Associating SBThread with a native thread

Jason Molenda jason at molenda.com
Thu Jan 8 10:56:02 PST 2015

> On Jan 8, 2015, at 8:26 AM, Mario Zechner <badlogicgames at gmail.com> wrote:
> Hi,
> we are currently trying work around some issues with rapid suspend/resume. We essentially setup a thread in the inferior with which we communicate via TCP to get informed of events such as thread start/stop without having to set breakpoints and stopping the inferior.
> Eventually we need to associate the native threads with the SBThread we get from LLDB's API. SBThread has an id and an index, but those don't seem to map to anything on the inferior side (e.g. the pthread id of the thread).
> Is there a way to perform this association?

As Greg said, on Mac OS X each thread created by the system since the last reboot is assigned an incrementing number, the globally unique thread id.  That's what lldb and sample use as the thread identifiers -- pthread_t values may be reused by the system during a process lifetime as threads are created and destroyed.

You can get the globally unique thread id for the current thread via the nonportable pthread_threadid_np() call.  e.g.

(lldb) thread info
thread #1: tid = 0x088f, 0x00007fff856b352e libsystem_kernel.dylib`mach_msg_trap + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP

(lldb) p/x (void*)malloc(8)
(void *) $2 = 0x0000620000007a00

(lldb) p/d (uint64_t) pthread_threadid_np(0, $2)
(uint64_t) $3 = 0

(lldb) x/gx $2
0x620000007a00: 0x000000000000088f


More information about the lldb-dev mailing list