for_write_seq_lis有什么作用?

时间:2010-12-14 14:51:47

标签: fortran valgrind fortran90

我正在使用valgrind调试Fortran 90程序。我在跟踪中遇到错误

==93929== Use of uninitialised value of size 4
==93929==    at 0x7C3D4B: for__add_to_lf_table 
==93929==    by 0x8014A8: for__open_proc.
==93929==    by 0x7C7B0F: for__open_default 
==93929==    by 0x7F3648: for_write_seq_lis 
<rest of my application backtrace>

我不明白这是我的错误还是仅仅是内部库的怪癖。我想知道这些功能的作用以及任何其他相关信息。

我正在使用ifort(IFORT)11.1 20100806,在macosx上编译valgrind 3.6.0。

编辑:当使用associated(ptr)内在函数或使用print *时,我能够发现valgrind错误的出现。无论如何,我只是想知道这些例程的责任。什么是lf表?

1 个答案:

答案 0 :(得分:0)

我的猜测是名称以for_开头的符号是在程序使用的运行时库中定义的,可能是随英特尔编译器提供的。我希望你能为自己想出斯蒂法诺。除了显而易见之外,他们所做的事情是模糊不清的:实施Fortran的各种操作。

你做了什么来追踪错误的起源,这使得valgrind抱怨你使用了未初始化的值?您是否尝试使用选项-check uninit进行编译?您是否在代码上尝试过英特尔源代码检查程序?

编辑:啊哈。 Fortran的一个特点是,在声明它的时间和它首次与目标关联的时间之间,指针没有关联状态。它既不相关也不相关,对ASSOCIATED的调用可能会产生奇怪的结果;例如,根据标准,他们不应该返回.true..false.。这可能是您问题的根源,尽管您报告的其他症状并未指明这一点。