在Solaris上使用maintenance命令查看线程信息

技巧

用gdb调试多线程程序时,如果想查看线程信息,可以使用“i threads”命令(i是info命令缩写),例如:

(gdb) i threads
106 process 2689429      0xff04af84 in __lwp_park () from /lib/libc.so.1
105 process 2623893      0xff04af84 in __lwp_park () from /lib/libc.so.1
104 process 2558357      0xff04af84 in __lwp_park () from /lib/libc.so.1
103 process 2492821      0xff04af84 in __lwp_park () from /lib/libc.so.1

在Solaris操作系统上,gdb为Solaris量身定做了一个查看线程信息的命令:“maint info sol-threads”(maint是maintenance命令缩写),例如:

(gdb) maint info sol-threads
user   thread #1, lwp 1, (active)
user   thread #2, lwp 2, (active)    startfunc: monitor_thread
user   thread #3, lwp 3, (asleep)    startfunc: mem_db_thread
- Sleep func: 0x000aa32c

可以看到相比于info命令,maintenance命令显示了更多信息。例如线程当前状态(active,asleep),入口函数(startfunc)等。

参见gdb手册

贡献者

nanxiao