我经常需要调试使用大量复杂数据的遗留 Fortran 代码,可用的最佳选项是 TotalView。我创建了自己的可视化工具来查看运行良好的数据(按照 TotalView在此处的说明)。它比默认的更灵活,并且能够摄取和显示复杂的数据,但 TotalView 不会通过其可视化管道发送复杂的数组。
有什么方法可以让 TotalView 能够显示复杂的数据,而无需使用额外的调试数组重新编译代码来获取绝对值?
例如,对于像以下简短示例这样的代码,我可以在 Fortran 中创建另一个数组,但我真的很想停下来检查变量my_arr
:
program main
implicit none
integer N, M, i, j
parameter (N=100, M=30)
complex my_arr(N, M)
real pi
pi = ACOS(-1.0)
do j = 1, M
do i = 1, N
my_arr(i,j) = cmplx(i*cos(j/pi), i*sin(j/pi))
end do
end do
return
end
对于小型数组,我可以用这样的表达式来逃避:
my_arr%Real_Part**2 + my_arr%Imaginary_Part**2
但这不适用于任何非常大的东西,TotalView 抱怨内存。
我正在使用 TotalView 8.13。