JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:使用 dbx 调试程序     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  dbx 入门

2.  启动 dbx

3.  定制 dbx

4.  查看和导航到代码

5.  控制程序执行

6.  设置断点和跟踪

7.  使用调用堆栈

8.  求值和显示数据

9.  使用运行时检查

10.  修复并继续

11.  调试多线程应用程序

了解多线程调试

线程信息

查看另一线程的上下文

查看线程列表

恢复执行

了解线程创建活动

理解 LWP 信息

12.  调试子进程

13.  调试 OpenMP 程序

14.  处理信号

15.  使用 dbx 调试 C++

16.  使用 dbx 调试 Fortran

17.  使用 dbx 调试 Java 应用程序

18.  在机器指令级调试

19.  将 dbx 与 Korn Shell 配合使用

20.  调试共享库

A.  修改程序状态

B.  事件管理

C.  宏

D.  命令参考

索引

了解线程创建活动

通过使用以下示例中的 thr_create 事件和 thr_exit 事件,可以了解应用程序创建和销毁线程的频率:

(dbx) trace thr_create
(dbx) trace thr_exit
(dbx) run

trace: thread created t@2 on l@2
trace: thread created t@3 on l@3
trace: thread created t@4 on l@4
trace: thr_exit t@4
trace: thr_exit t@3
trace: thr_exit t@2

该应用程序创建了三个线程。请注意线程是如何以相反顺序从其创建中退出来的。这可能表明,如果此应用程序中的线程偏多,就会导致线程累积并消耗资源。

要获得更多值得注意的信息,可以在不同会话中尝试以下操作:

(dbx) when thr_create { echo "XXX thread $newthread created by $thread"; }
XXX thread t@2 created by t@1
XXX thread t@3 created by t@1
XXX thread t@4 created by t@1

此输出显示三个线程全部是由公用多线程模式的 t@1 线程创建的。

假设您要从开头调试线程 t@3。可以在线程 t@3 创建为如下所示时停止应用程序。

(dbx) stop thr_create t@3
(dbx) run
t@1 (l@1) stopped in tdb_event_create at 0xff38409c
0xff38409c: tdb_event_create       :    retl
Current function is main
216       stat = (int) thr_create(NULL, 0, consumer, q, tflags, &tid_cons2);
(dbx)

如果您的应用程序有时从线程 t@5 而不是从线程 t@1 产生新的线程,则可以按如下所示捕获此事件:

(dbx) stop thr_create -thread t@5