Fortran Coder

查看: 10264|回复: 8
打印 上一主题 下一主题

[调试器] Debug时 allocate 分配数组显示为 undefined

[复制链接]

24

帖子

5

主题

0

精华

熟手

航哥

F 币
196 元
贡献
82 点

规矩勋章

QQ
跳转到指定楼层
楼主
发表于 2014-10-30 23:13:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
         1. module中声明了一个integer 型变量;         2. 这个变量的数值 在module中的一个子程序内从文件读入

         3. 在module内的另一个子程序中声明了一个具有allocatable特征的real 型数组;
         4. 用这个integer 型变量给这个real 型数组 allocate 内存。

        问题: 1. 编译没错,可是调试过程中,这个real型数,显示为 undefined array。
                       我用一个具体的数字代替这个integer型变,这个数组显示为 undefined address。
                       什么原因?
               
                   2.  我是这样解决的:我把这个allocatable特征的real 数组 放到module内声明,就没有问题了,但是违反了我的初衷。
                       有没有更好的办法?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2014-10-31 08:49:33 | 只看该作者
从你的描述来说,没有问题。

我也不知道你的问题在哪儿,给代码吧,直观。

136

帖子

3

主题

0

精华

版主

F 币
1964 元
贡献
1677 点

帅哥勋章管理勋章爱心勋章新人勋章热心勋章元老勋章

板凳
发表于 2014-10-31 11:15:30 | 只看该作者
不知道你怎么弄的,反正我这没问题
[Fortran] 纯文本查看 复制代码
   MODULE module_defi_Val
    Integer   :: iVal
    Contains 
    Subroutine setValue()
    Implicit None
        iVal = 2
    Return
    End Subroutine setValue
    End MODULE module_defi_Val
!*****************************************************************************!
    MODULE module_defi_array
    Use module_defi_Val
    IMPLICIT NONE
    REAL(kind=8),allocatable :: x(:)
    CONTAINS
    Subroutine allocateArray()
    Implicit None
        Allocate( x(iVal) )
        x = 1
    Return
    End Subroutine allocateArray
    End MODULE module_defi_array
!*****************************************************************************!
    Program www_fcode_cn
    Use module_defi_Val
    Use module_defi_array
    Implicit None
    call setValue
    call allocateArray
    write(*,*) x 
    Stop
    End Program www_fcode_cn

24

帖子

5

主题

0

精华

熟手

航哥

F 币
196 元
贡献
82 点

规矩勋章

QQ
地板
 楼主| 发表于 2014-10-31 14:56:15 | 只看该作者
本帖最后由 hang719 于 2014-10-31 15:31 编辑
fcode 发表于 2014-10-31 08:49
从你的描述来说,没有问题。

我也不知道你的问题在哪儿,给代码吧,直观。 ...

代码太多,我写了个简化版,看5楼

24

帖子

5

主题

0

精华

熟手

航哥

F 币
196 元
贡献
82 点

规矩勋章

QQ
5#
 楼主| 发表于 2014-10-31 15:27:45 | 只看该作者
本帖最后由 hang719 于 2014-10-31 15:30 编辑

我写了个简化版的。
[Fortran] 纯文本查看 复制代码
module  Test
    implicit none
    integer::n
contains

subroutine Set_n
    implicit none
    n=3
end subroutine

subroutine  Allocate_memory
    implicit none
    real(kind=8),allocatable::array(:)
    
    allocate(array(n))
    
    array(:)=1.0
    
    write(*,*)   array(1),array(2),array(3)
    
end subroutine

end module

program main
    use Test
    implicit none
    call Set_n
    call Allocate_memory
    
end program


断点设置在这里,这个是调试显示结果,数组显示undefined pointed/array。


但是输出结果是对的。




24

帖子

5

主题

0

精华

熟手

航哥

F 币
196 元
贡献
82 点

规矩勋章

QQ
6#
 楼主| 发表于 2014-10-31 15:32:50 | 只看该作者
本帖最后由 hang719 于 2014-10-31 15:35 编辑
aliouying 发表于 2014-10-31 11:15
不知道你怎么弄的,反正我这没问题
[mw_shl_code=fortran,true]   MODULE module_defi_Val
    Integer   : ...

我的allocatable变量是想设置成某个子程序内的局部变量,你这个是全局变量,不太一样。看5楼。

24

帖子

5

主题

0

精华

熟手

航哥

F 币
196 元
贡献
82 点

规矩勋章

QQ
7#
 楼主| 发表于 2014-10-31 15:33:54 | 只看该作者
aliouying 发表于 2014-10-31 11:15
不知道你怎么弄的,反正我这没问题
[mw_shl_code=fortran,true]   MODULE module_defi_Val
    Integer   : ...

我的allocatable变量是想设置成某个子程序内的局部变量,你这个是全局变量,不太一样。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
8#
发表于 2014-10-31 15:53:33 | 只看该作者
通常来说,断点不要在表示结构的语句上,而应该在执行语句上。

你的调试器有 bug 吧?我这里一切 OK

QQ截图20141031155322.png (8.2 KB, 下载次数: 427)

QQ截图20141031155322.png

24

帖子

5

主题

0

精华

熟手

航哥

F 币
196 元
贡献
82 点

规矩勋章

QQ
9#
 楼主| 发表于 2014-10-31 21:59:17 | 只看该作者
vvt 发表于 2014-10-31 15:53
通常来说,断点不要在表示结构的语句上,而应该在执行语句上。

你的调试器有 bug 吧?我这里一切 OK

还真是,估计是我的debug问题,
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 02:21

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表