dbx コマンドによるデバッグ

配列の断面化と刻みのための構文

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

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


print arr-exp [first-exp .. last-exp : stride-exp]

arr-exp

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

first-exp

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

last-exp

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

stride-exp

刻み幅。デフォルトは 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..8:2] =
[2] = 2
[4] = 4
[6] = 6

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


(dbx) print arr(exp1:exp2:exp3)

exp1

配列の断面の先頭 

exp2

配列の断面の終端 

exp3

刻み幅の長さ (スキップされる要素の数は exp3 - 1)

n 次元で配列の断面化を行うときは、各次元の配列断面化の定義をコンマで区切ります。


(dbx) print arr(exp1:exp2:exp3, exp1:exp2:exp3,...)

配列の断面

2 次元の矩形配列の断面の例を示します。ここでは、刻み値が省略され、デフォルト値の 1 が使用されます。


print arr(201:203, 101:105)

Graphic

最初の 2 つの式 (201:203) は、この 2 次元配列の第 1 次元 (3 行で構成される列) を指定します。配列の断面は行 201 から始まり、行 203 で終わります。次の 2 つの式 (101:105) は最初の組とコンマで区切られ、第 2 次元の配列の断面を定義します。配列の断面は列 101 から始まり、列 105 で終わります。

刻み幅

print コマンドで刻み幅を指定すると、配列の断面に含まれる特定の要素だけが評価されます。

配列の断面のための構文の 3 番目の式 (exp3) は、刻み幅の長さを指定します。exp3 個の要素のうちの先頭の 1 つが評価され、残りの exp3 -1 個の要素は評価されません。刻み幅のデフォルト値は 1 です。このとき、指定された配列の断面のすべての要素が評価されます。

ここに、上の例で使用したものと同じ配列があります。今度は、print コマンドの第 2 次元の配列の断面の定義に刻み幅の値として 2 を加えます。


print arr(201:203, 101:105:2)

Graphic

簡易構文

print コマンドの配列の断面の定義を構成する式を省略すると、配列の宣言されたサイズに等しいデフォルト値が使用されます。このような簡易構文を使用した例を以下に示します。

1 次元配列の場合

print arr  デフォルトの境界で配列全体を出力します。
print arr(:) デフォルトの境界とデフォルトの刻み (1) で、配列全体を出力します。
print arr(::exp3)配列全体を exp3 で指定された刻み幅で出力します。

2 次元配列の場合、次のコマンドは配列全体を出力します。


print arr

2 次元配列の第 2 次元を構成する要素を 2 つおきに出力します。


print arr (:,::3)