我是一名工程师,而不是代码编写者。 (来自法国,所以请原谅我有时可怜的英语)所以我缺乏基础知识,例如" GDB" :
我正在使用openmp子句开发段错误的fortran程序。 我已经通过gdb给出了程序无法达到的内存位置的地址,但我想知道有问题的变量的名称,以帮助找出问题所在。
如何给出位于0x00002aaaaab455ca的变量的名称,gdb在我的确切情况下说?
感谢' S, 大卫
我可能需要一个gdb脚本给我所有变量的所有地址,但我甚至不知道如何做到这一点;你能给我一个地址去哪里学习吗?谢谢。
编辑:我用这种方式使用gfortran: $ gfortran input.f -g -freal-8-real-16 -o outputEDIT2:对不起,我当然要用-fopenmp;并且我还使用前面编译中的所有警告,以便非常清洁"生产运行的代码。 (我已经检查过任何可能的事情,我只需要变量的名称为segfaults,以便更正它的索引计算)
答案 0 :(得分:2)
你可以给我一个地址去哪里学习
这些问题在这里是偏离主题的,但这里是GDB上的book。
您有两种选择:
假设你想做(1),这里有一些你可能会觉得有用的命令:
where
(告诉你程序在哪里崩溃)x/i $pc
(告诉您导致崩溃的指示)info registers
(这与上面一起,应该为您提供程序尝试访问的确切地址)info locals
,info globals
,info addr 0x....
(为您提供本地和全局变量的列表,也可以告诉您对崩溃地址的需求)。如果上述还不够,您应该编辑您的问题以显示您的距离(即上述命令的输出),我们可以为您提供更多帮助。但是很难通过这种低速连接进行调试,所以你真的应该尝试找到离你更近的人(即使用选项(2))。