Sun Studio 12 Update 1:使用 dbx 调试程序

线程信息

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)

本机代码的每行信息由以下内容组成:

Java 代码的每行信息由以下内容组成:

表 11–1 线程和 LWP 状态

线程和 LWP 状态  

说明  

挂起 

线程已被显式挂起。 

可运行 

线程可运行,并正等待作为计算资源的 LWP。 

僵停 

分离的线程退出 (thr_exit()) 后,在通过使用 thr_join() 重新链接之前,将一直处于僵停状态。THR_DETACHED 是在线程创建时 (thr_create()) 指定的标志。退出的非分离线程在被获得前将一直处于僵停状态。

syncobj 上休眠

线程在给定同步对象上被阻塞。视 libthreadlibthread_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 正在退出。