The thread information shown in the following example is available in dbx.
(dbx) threads t@1 a l@1 ?() running in main() t@2 ?() asleep on 0xef751450 in_swtch() t@3 b l@2 ?() running in sigwait() t@4 consumer() asleep on 0x22bb0 in _lwp_sema_wait() *>t@5 b l@4 consumer() breakpoint in Queue_dequeue() t@6 b l@5 producer() running in _thread_start() (dbx)
For native code, each line of information is composed of the following:
The * (asterisk) indicates that an event requiring user attention has occurred in this thread. Usually this is a breakpoint.
An ’o’ instead of an asterisk indicates that a dbx internal event has occurred.
The > (arrow) denotes the current thread.
t@number, the thread id, refers to a particular thread. The number is the thread_t value passed back by thr_create.
b l@number or a l@number means the thread is bound to or active on the designated LWP, meaning the thread is actually runnable by the operating system.
The “Start function” of the thread as passed to thr_create. A ?() means that the start function is not known.
The thread state .
The function that the thread is currently executing.
For Java code, each line of information is composed of the following:
t@number, a dbx-style thread ID
The thread state
The thread name in single quotation marks
A number indicating the thread priority
The thread has been explicitly suspended.
The thread is runnable and is waiting for an LWP as a computational resource.
When a detached thread exits (thr_exit)), it is in a zombie state until it has rejoined through the use of thr_join(). THR_DETACHED is a flag specified at thread creation time (thr_create()). A non-detached thread that exits is in a zombie state until it has been reaped.
Thread is blocked on the given synchronization object. Depending on what level of support libthread and libthread_db provide, syncobj might be as simple as a hexadecimal address or something with more information content.
The thread is active on an LWP but dbx cannot access the LWP.
dbx cannot determine the state.
A bound or active thread state has the state of the LWP associated with it.
LWP was running but was stopped in synchrony with some other LWP.
LWP stopped on an entry into the given system call #.
LWP stopped on an exit from the given system call #.
LWP stopped due to job control.
LWP is blocked in the kernel.
LWP has just completed a single step.
LWP has just hit a breakpoint.
LWP has incurred the given fault #.
LWP has incurred the given signal.
The process to which this LWP belongs has just started executing.
LWP is in the process of exiting.