使用gdb在Fortran中打印可分配数组:未处理的侏儒表达式操作码0x97



我在Cygwin和Eclipse中使用gdb作为调试器调试了以下代码:

program codetest
    implicit none
    integer, parameter :: dp = kind(1.0d0)
    integer, parameter :: N = 10
    real(dp), dimension(:), allocatable :: vector
    integer :: i
    allocate(vector(1:N))
    forall(i = 1:10)
        vector(i) = sqrt(real(i, dp))
    end forall
    write(*, '(F7.3, 1X)', advance = 'no') (vector(i), i = 1, N)
    deallocate(vector)
end program codetest

当运行gdb时,我试图在其分配之后打印可分配数组"vector",但最终得到以下结果:

(gdb) p vector
Unhandled dwarf expression opcode 0x97

我搜索了Stack Overflow和谷歌,但没有找到任何能触及问题核心的东西。我已经检查了以下内容,

  • http://numericalnoob.blogspot.be/2012/08/fortran-allocatable-arrays-and-pointers.html
  • 未处理的侏儒表达式
  • Fortran在gdb中打印可分配数组

但我仍然不知道问题是什么,也不知道如何解决。在Eclipse(Mars.1 Release,4.5.1)中,gdb在试图打印/显示派生类型的内容时也向我提出了同样的抱怨。关于我的机器/编译器/调试器的当前规范包括以下内容:

  • Windows 8.1
  • gfortran版本:GNU Fortran(GCC)4.9.3
  • gdb版本:GNU gdb(gdb)7.8

感谢您的帮助。

正如评论中所指出的,我只需要更新我的gdb版本,这是我通过Cygwin完成的。我现在运行的是gdb 7.9.1-1版本,与以前的gfortran版本相同。

最新更新