Oracle Solaris Studio 12.2:使用 dbx 调试程序

使用事件

dbx 提供了可以与 stopwhentrace 命令结合用于 OpenMP 代码的事件。有关将事件与这些命令结合使用的信息,请参见设置事件规范

同步事件

omp_barrier [type] [state]

跟踪线程进入屏障事件。

type 可以是以下值:

  • explicit,表示跟踪显式屏障

  • implicit,表示跟踪隐式屏障

如果不指定 type,则只跟踪显式屏障。

state 可以是以下值:

  • enter,表示在有线程进入屏障时报告该事件

  • exit,表示在有线程退出屏障时报告该事件

  • all_entered,表示在所有线程都进入屏障时报告该事件

如果不指定 state,缺省值为 all_entered

如果指定 enterexit,可以设置线程 ID 以指定仅跟踪该线程。

omp_taskwait [state]

跟踪线程进入任务等待事件。

state 可以是以下值:

  • enter,表示在线程进入任务等待时报告该事件

  • exit,表示在所有子任务都已完成时报告该事件

如果不指定 state,缺省值为 exit

omp_ordered [state]

跟踪线程进入有序区域事件。

state 可以是以下值:

  • begin,表示在有序区域开始时报告该事件

  • enter,表示在线程进入有序区域时报告该事件

  • exit,表示在线程退出有序区域时报告该事件

如果不指定 state,则缺省值为 enter

omp_critical

跟踪线程进入关键区域事件。

omp_atomic [state]

跟踪线程进入原子区域事件。

state 可以是以下值:

  • begin,表示在原子区域开始时报告该事件

  • exit,表示在线程退出原子区域时报告该事件

如果不指定 state,缺省值为 begin

omp_flush

跟踪线程执行刷新事件。

其他事件

omp_task [state]

跟踪任务的创建与终止。

state 可以是以下值:

  • create,表示在任务刚刚创建完毕且尚未开始执行时报告该事件

  • start,表示在任务开始执行时报告该事件

  • finish,表示在任务执行完毕即将终止时报告该事件

如果不指定 state,缺省值为 start

omp_master

跟踪主线程进入主区域事件。

omp_single

跟踪线程进入单个区域事件。