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

单步步入并行区域

dbx 可以单步步入并行区域。因为并行区域是外联区域并从 OpenMP 运行时库中进行调用,所以单步执行实际涉及几个层次的运行时库调用(这些调用由为此目的而创建的线程执行)。单步步入并行区域时,到达断点的第一个线程引起程序停止。此线程可能是从属线程而不是启动单步执行的主线程。

例如,请参阅编译器如何转换 OpenMP 代码中的 Fortran 代码,并假定主线程 t@1 位于第 10 行。当您单步执行到第 12 行时,将创建从属线程 t@2t@3t@4 来执行运行时库调用。线程 t@3 首先到达断点并导致程序停止执行。因此,由线程 t@1 启动的单步执行在线程 t@3 上结束。此行为不同于正常的单步执行(在正常的单步执行后,通常仍处在与此前相同的线程上)。