【发布时间】:2012-04-22 00:50:36
【问题描述】:
我使用 gfortran 4.4 和 intel 11.1 编译了一个包含多个模块的 Fortran 代码,随后尝试使用 gdb 和 DDT 对其进行调试。在所有情况下,我都看不到模块中声明的任何变量的值。这些全局变量具有值,因为代码仍然可以正确运行,但我看不到调试器中的值。局部变量很好。我在网上其他地方找不到解决这个问题的方法,所以也许没有直接的解决方案,但是如果我看不到任何全局变量的值,调试我的代码将非常困难。
【问题讨论】:
-
您是否使用标志 -O0 和 -g 进行编译?
-
我已经看到了,我所做的是将变量包含在用户类型中,并保留一个全局(已保存)记录。然后你在调试器中使用 % 访问(例如 OT%POINT_COUNT 当 OT 包含我的 gobals 时)
-
对 Nick Atoms 来说,使用 -O0 编译可以解决问题,但仅适用于非数组元素。我读到优化会导致全局变量无法访问,但我认为如果没有使用优化标志,那么编译器默认不会进行优化。显然,我错了。但是,我仍然无法访问全局数组中的任何信息。同样,它们被正确读取并赋值,但我无法在调试器中打印整个数组或数组中的任何单个元素。
-
我问了一个类似的问题,后来自己回答了。主要涉及将指针转换为不同的类型,然后您可以根据需要查看它们(如数组、结构等)stackoverflow.com/questions/46141549/…