GDB(英特尔):打印有效,但信息地址无效

时间:2018-10-26 18:33:31

标签: fortran gdb intel-fortran

树如下

module M
    type A
      real     , allocatable :: dd (:)
    end type A


    type B 
      type (A) , pointer :: aa
    end type B


    type C
     type(B) , pointer :: bb
    end type C

    type(C) , allocatable :: cc(:)

end module M

在gdb中:

print M::cc(10) % bb % aa % dd(100) 
$1 = 0

但是

info address M::cc(10) % bb % aa % dd (100) 

生成错误:在当前上下文中没有符号“ cc(10)%bb%aa%dd(100)”。

whatis address M::cc(10) % bb % aa% dd(100)

生成错误:无法访问地址0xa0处的内存

我看到必须指定编译器标志“ -g”来访问全局变量,但这无济于事。

我需要该地址的原因是为了使用软件监视点来watch M::cc(10) %bb % aa % dd (100),以便我不会大幅降低gdb的速度。我希望这能使我深入了解更改dd (100)的代码行。

我已经探讨过的一个选项是继续设置观察点:

watch cc(10) % bb % aa % dd ( 100 ) 

但这会导致数百个监视点,它们的编号分别为1.1,1.2,1.3 .... 1.500!这确实减慢了gdb中的执行速度。

那么我该如何访问该地址?如果不可能的话,最好的选择是什么?

0 个答案:

没有答案