跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:使用 dbx 调试程序 Oracle Solaris Studio 12.3 Information Library (简体中文) |
以下是 Fortran 数组示例:
integer*4 arr(1:6, 4:7)
要对数组求值,可使用 print 命令。例如:
(dbx) print arr(2,4)
使用 dbx print 命令可以对大型数组的一部分求值。数组求值包括:
进行数组分片时,可以使用跨距,也可以不使用跨距。(缺省跨距值为 1,即表示打印每个元素。)
C、C++ 和 Fortran 语言中的 print、display 和 watch 命令支持数组分片。
对于数组的每个维度,对数组分片的完整 print 命令语法如下:
print array-expression [first-expression .. last-expression : stride-expression]
其中:
求值结果应为数组或指针类型的表达式。
要输出的第一个元素。缺省值为 0。
要输出的最后一个元素。缺省值为数组上界。
跨距长度(跳过的元素个数为 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
对于数组的每个维度, 对数组分片的完整 print 命令语法如下:
print array-expression [first-expression : last-expression : stride-expression]
其中:
求值结果应为数组类型的表达式。
某个范围内的第一个元素,也是要输出的第一个元素。缺省值为数组下界。
某个范围内的最后一个元素,但如果跨距不等于 1,则可能不是要输出的最后一个元素。缺省值为数组上界。
跨距长度。缺省值为 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)
以下是一个二维矩形 C++ 数组片示例(省略了缺省跨距 1)。
print arr(201:203, 101:105)
此命令输出大型数组的一部分元素。请注意,该命令省略了 stride-expression,使用的是缺省跨距值 1。
如上所示,前两个表达式 (201:203) 指定该二维数组的第一个维度中的数组片(三行一列)。数组片从第 201 行开始,到第 203 行结束。第二组表达式(以逗号与第一组表达式分开)用于定义第二个维度的数组片。该数组片从第 101 列开始,到第 105 列结束。
指示 print 跨越数组片时,dbx 只对该数组片中的某些元素求值,而跳过对其求值的各个元素之间一定数量的元素。
数组分片语法中的第三个表达式 stride-expression 指定跨距长度。stride-expression 值指定要输出的元素。缺省跨距值为 1,即: 对指定数组片中的所有元素求值。
以下数组与上一数组片示例使用的数组相同。这一次,print 命令中,第二个维度中数组片的跨距为 2。
print arr(201:203, 101:105:2)
如图所示,使用跨距 2 时,将打印所有第二个元素,而跳过所有其他元素。
对于省略的表达式,输出时取与数组的声明大小相等的缺省值。以下是如何使用简化语法的示例。
对于一维数组,请使用下列命令:
使用缺省边界打印整个数组。
使用缺省边界和缺省跨距 1 打印整个数组。
使用跨距 stride-expression 打印整个数组。
对于二维数组,可使用以下命令打印整个数组。
print arr
要打印二维数组中第二个维度的所有第三个元素,请键入:
print arr (:,::3)