树如下
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中的执行速度。
那么我该如何访问该地址?如果不可能的话,最好的选择是什么?