我经常需要调试使用大型复杂数据阵列的旧Fortran代码,并且可用的最佳选项是TotalView。我创建了自己的可视化工具来查看数据(按照TotalView的说明here),效果很好。它比默认的更灵活,并且能够摄取和显示复杂的数据,但TotalView不会通过可视化管道发送复杂的数组。如何将复杂数据发送到TotalView中的可视化工具?
有没有什么办法让TotalView能够显示复杂的数据,而无需使用额外的调试数组重新编译代码来获取绝对值?
E.g.像下面这个简短的示例代码,我可以使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。