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

配列の断面化

C、C++、Fortran では、printdisplay、および watch コマンドによって、配列の断面化を行うことができます。

C と C++ での配列の断面化の構文

配列の各次元を断面化するための print コマンドの完全な構文は次のとおりです。


print array-expression [first-expression .. last-expression : stride-expression]

ここで

array-expression

配列またはポインタ型に評価されるべき式

first-expression

印刷される最初の要素。デフォルトは 0

last-expression

印刷される最後の要素。その上限にデフォルト設定

stride-expression

刻み幅の長さ (スキップされる要素の数は stride-expression-1)。デフォルトは 1

最初、最後、および刻み幅の各式は、整数に評価されなければならない任意の式です。

次に例を示します。


(dbx) print arr[2..4]
arr[2..4] =
[2] = 2
[3] = 3
[4] = 4
(dbx) print arr[..2]
arr[0..2] =
[0] = 0
[1] = 1
[2] = 2

(dbx) print arr[2..6:2]
arr[2..6:2] =
[2] = 2
[4] = 4
[6] = 6

Fortran のための配列断面化構文

配列の各次元を断面化するための print コマンドの完全な構文は次のとおりです。


print array-expression [first-expression : last-expression : stride-expression]

ここで

array-expression

配列型に評価される式

first-expression

範囲内の最初の要素は、出力される最初の要素下限にデフォルト設定

last-expression

範囲内の最後の要素。ただし刻み幅が 1 でない場合、出力される最後の要素とはなりません。その上限にデフォルト設定

stride-expression

刻み幅。デフォルトは 1

最初、最後、および刻み幅の各式は、整数に評価されなければならない任意の式です。n 次元の断面については、カンマで各断面の定義を区切ります。

次に例を示します。


(dbx) print arr(2:6)
arr(2:6) =
(2) 2
(3) 3
(4) 4
(5) 5
(6) 6

(dbx) print arr(2:6:2)
arr(2:6:2) =
(2) 2
(4) 4
(6) 6

行と列を指定するには、次のように入力します。


demo% f95 -g -silent ShoSli.f
demo% dbx a.out
Reading symbolic information for a.out
(dbx) list 1,12
    1         INTEGER*4 a(3,4), col, row
    2         DO row = 1,3
    3             DO col = 1,4
    4               a(row,col) = (row*10) + col
    5             END DO
    6         END DO
    7         DO row = 1, 3
    8                WRITE(*,’(4I3)’) (a(row,col),col=1,4)
    9        END DO
    10        END
(dbx) stop at 7
(1) stop at "ShoSli.f":7
(dbx) run
Running: a.out
stopped in MAIN at line 7 in file "ShoSli.f"
    7          DO row = 1, 3

行 3 を印刷するには、次のように入力します。


(dbx) print a(3:3,1:4)
’ShoSli’MAIN’a(3:3, 1:4) =
        (3,1)   31
        (3,2)   32
        (3,3)   33
        (3,4)   34
(dbx)

列 4 を印刷するには、次のように入力します。


(dbx) print a(1:3,4:4)
’ShoSli’MAIN’a(1:3, 1:4) =
        (1,4)   14
        (2,4)   24
        (3,4)   34
(dbx)