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) |
本机代码的每行信息由以下内容组成:
*(星号)表示该线程内发生了需要用户处理的事件。该事件通常是断点。
如果不是星号,而是 "o",则表示发生的是 dbx 内部事件。
>(箭头)表示为当前线程。
线程 id t@number 指特定线程。number 是 thr_create 传回的 thread_t 值。
b l@number 或 a l@number 表示线程绑定到指定的 LWP 或在其上处于活动状态(即操作系统可实际运行该线程)。
传递给 thr_create 的线程的“启动函数”。?() 表示启动函数未知。
线程状态(参见表 11–1 中有关线程状态的说明。)
线程当前执行的函数。
Java 代码的每行信息由以下内容组成:
t@number, dbx 样式的线程 ID
线程状态(参见表 11–1 中有关线程状态的说明。)
加单引号的线程名
说明线程优先级的数字
线程和 LWP 状态 |
说明 |
---|---|
挂起 |
线程已被显式挂起。 |
可运行 |
线程可运行,并正等待作为计算资源的 LWP。 |
僵停 |
分离的线程退出 (thr_exit())后,在使用 thr_join() 重新连接前,将一直处于僵停状态。THR_DETACHED 是在线程创建时 (thr_create()) 指定的标志。退出的非分离线程在被获得前将一直处于僵停状态。 |
在 syncobj 上休眠 |
线程在给定同步对象上被阻塞。视 libthread 和 libthread_db 所提供的支持级别,syncobj 可能会如十六进制地址一般简单,也可能会包含更多的信息内容。 |
活动 |
线程在某 LWP 中处于活动状态,但 dbx 无法访问该 LWP。 |
未知 |
dbx 无法确定状态。 |
lwpstate |
绑定或活动线程状态具有与之关联的 LWP 的状态。 |
运行 |
LWP 正在运行,但因响应另一 LWP 而同步停止。 |
syscall num |
LWP 进入给定系统调用 # 时停止。 |
syscall 返回 num |
LWP 退出给定系统调用 # 时停止。 |
作业控制 |
LWP 因作业控制而停止。 |
LWP 挂起 |
LWP 在内核中被阻塞。 |
单步递阶 |
LWP 刚刚完成一步。 |
断点 |
LWP 刚刚遇到断点。 |
fault num |
LWP 招致给定错误 #。 |
signal name |
LWP 招致给定信号。 |
进程同步 |
此 LWP 所属进程刚刚开始执行。 |
LWP 停止 |
LWP 正在退出。 |