Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

領域およびスレッド情報の出力

dbx は、現在の並列領域、または指定された並列領域に関する説明を出力できます。これには、親領域、並列領域 ID、チームのサイズ (スレッド数)、プログラムの場所 (プログラムのカウンタアドレス) が含まれます。次に例を示します。


(dbx) omp_pr
parallel region 127283434369843201
    team size = 4
    source location = test.c:103
    parent = 127283430568755201

また、現在の並列領域または指定された並列領域から、そのルートに至るまで、パス上のすべての並列領域の説明も出力できます。次に例を示します。


(dbx) omp_pr -ancestors
parallel region 127283434369843201
    team size = 4
    source location = test.c:103
    parent = 127283430568755201

    parallel region 127283430568755201
        team size = 4
        source location = test.c:95
        parent = <no parent>

さらに、並列領域ツリー全体も出力できます。次に例を示します。


(dbx) omp_pr -tree
parallel region 127283430568755201
    team size = 4
    source location = test.c:95
    parent = <no parent>

    parallel region 127283434369843201
        team size = 4
        source location = test.c:103
        parent = 127283430568755201

詳細については、omp_pr コマンド」を参照してください。

dbx は、現在のタスク領域、または指定されたタスク領域に関する説明を出力できます。これには、タスク領域 ID、状態 (生成済み、実行中、または待機中)、実行中のスレッド、プログラムの場所 (プログラムのカウンタアドレス)、未完了の子、親が含まれます。次に例を示します。


(dbx) omp_tr
task region 65540
    type = implicit
    state = executing
    executing thread = t@4
    source location == test.c:46
    unfinished children = 0
    parent = <no parent>

また、現在のタスク領域または指定されたタスク領域から、そのルートに至るまで、パス上のすべてのタスク領域の説明も出力できます。


(dbx) omp_tr -ancestors
task region 196611
    type = implicit
    state = executing
    executing thread = t@3
    source location - test.c:103
    unfinished children = 0
    parent = 131075

    task region 131075
        type = implicit
        state = executing
        executing thread = t@3
        unfinished children = 0
        parent = <no parent>

さらに、タスク領域ツリー全体も出力できます。次に例を示します。


(dbx) omp_tr -tree
task region 10
    type = implicit
    state = executing
    executing thread = t@10
    source location = test.c:103
    unfinished children = 0
    parent = <no parent>
task region 7
    type = implicit
    state = executing
    executing thread = t@7
    source location = test.c:103
    unfinished children = 0
    parent = <no parent>
task region 6
    type implicit
    state = executing
    executing thread = t@6
    source location = test.c:103
    unfinished children = 0
    parent = <o parent>
task region 196609
    type = implicit
    state = executing
    executing thread = t@1
    source location = test.c:95
    unfinished children = 0
    parent = <no parent>

    task region 262145
        type = implicit
        state = executing
        executing thread = t@1
        source location = test.c:103
        unfinished children - 0
        parent = 196609
 

詳細については、omp_tr コマンド」を参照してください。

dbx は、現在のループに関する説明を出力できます。これには、スケジューリングの型 (静的、動的、ガイド付き、自動、または実行時)、番号付きまたは番号なし、範囲、ステップ数または刻み幅、および繰り返し回数が含まれます。次に例を示します。


(dbx) omp_loop
    ordered loop: no
    lower bound: 0
    upper bound: 3
    step: 1
    chunk: 1
    schedule type: static
    source location: test.c:49

詳細については、omp_loop コマンド」を参照してください。

dbx は、現在のチーム、または指定された並列領域のチームのすべてのスレッドを出力できます。次に例を示します。


(dbx) omp_team
team members:
    0: t@1 state = in implicit barrier, task region = 262145
    1: t@6 state = in implicit barrier, task region = 6
    2: t@7 state = working, task region = 7
    3: t@10 state = in implicit barrier, task region = 10

詳細については、omp_team コマンド」を参照してください。

OpenMP コードをデバッグするとき、thread -info は、現在のスレッドまたは指定のスレッドに関する通常の情報に加え、OpenMP スレッド ID、並列領域 ID、タスク領域 ID、および OpenMP スレッドの状態も出力します。詳細については、thread コマンド」を参照してください。