Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables gdb声称它是哪个变量_Variables_Segmentation Fault_Gdb_Fortran_Memory Address - Fatal编程技术网

Variables gdb声称它是哪个变量

Variables gdb声称它是哪个变量,variables,segmentation-fault,gdb,fortran,memory-address,Variables,Segmentation Fault,Gdb,Fortran,Memory Address,我是一名工程师,不是代码编写者。(来自法国,请原谅我有时英语不好)因此我缺乏基本知识,例如“gdb”: 我正在openmp子句中开发的fortran程序。 gdb给了我程序无法到达的内存位置的地址,但我想知道有问题的变量的名称,以便帮助我找到出错的地方 gdb在我的精确案例中说,如何给出位于0x00002aaaab455ca的变量的名称 谢谢,, 大卫 我可能需要一个gdb脚本给我所有变量的地址,但我也不知道如何做到这一点;你能给我一个地址在哪里学习吗?多谢各位 编辑:我使用gfortran的方

我是一名工程师,不是代码编写者。(来自法国,请原谅我有时英语不好)因此我缺乏基本知识,例如“gdb”:

我正在openmp子句中开发的fortran程序。 gdb给了我程序无法到达的内存位置的地址,但我想知道有问题的变量的名称,以便帮助我找到出错的地方

gdb在我的精确案例中说,如何给出位于0x00002aaaab455ca的变量的名称

谢谢,, 大卫

我可能需要一个gdb脚本给我所有变量的地址,但我也不知道如何做到这一点;你能给我一个地址在哪里学习吗?多谢各位

编辑:我使用gfortran的方式如下: $gfortran输入.f-g-freal-8-real-16-o输出

EDIT2:对不起,我当然用-fopenmp;我还使用了前面编译中的所有警告,以便为生产运行提供非常“干净”的代码。(我已经检查了所有可能的,我只需要SEGFULTS变量的名称,以便更正其索引的计算)

你能给我一个地址在哪里学习吗

这样的问题在这里是离题的,但这里有一个关于GDB的问题

你有两个选择:

  • 您可以学习足够的GDB来调试这个问题,或者
  • 你可以贿赂更熟悉的人为你做这件事
  • 假设您想执行(1),以下是一些您可能会觉得有用的命令:

    • where
      (告诉您程序崩溃的位置)
    • x/i$pc
      (告诉您导致崩溃的指令)
    • 信息寄存器
      (这与上面的内容一起,应该会给出程序试图访问的确切地址)
    • info locals
      info globals
      info addr 0x..
      (提供本地和全局变量的列表,还可能告诉您需要关于崩溃地址的信息)

    如果以上还不够,您应该编辑您的问题,以显示您取得了多大的进步(即上述命令的输出),我们可能会为您提供更多帮助。但是在这样一个低速连接上进行调试是很困难的,所以你真的应该试着找一个更接近你的人(即使用选项(2))。

    你如何编译你的代码?哪个编译器?哪些旗帜?相关代码是什么样子的?请编辑您的问题。您没有使用编译器选项
    -fopenmp
    ,因此编译器没有使用OpenMP。尝试使用
    -fcheck=all
    ,编译器可能会在不需要使用gdb的情况下发现问题。对于调试,我建议使用以下选项:
    -fimplicit none-Wall-Wline truncation-Wcharacter truncation-Wsurprising-Waliasing-Wimplicit interface-Wunused parameter-fcheck=all
    为什么在edit 1中向我们显示命令行,然后说您实际使用了其他命令行?那你到底用什么?不要使用编辑1、编辑2、编辑3。。。但要让它成为一个好的、明确的问题。请阅读“帮助”部分中的“如何提出好问题”。对不起,弗拉基米尔,这不是很清楚;这是因为我在度假,我想知道周一我能在工作中做些什么;因此,我提供的信息仅依赖于我对我认为在每次回答时重要的事实的记忆/回忆。我只能在星期一给你确切的命令;下周见;-)嗨,弗拉基米尔F,新年快乐;我实际编译程序的方式是:$echo;回声;回声;回声;回声;gfortran/S/DATA/DVA/F90/BN/SS.f-fdefault-real-8-fbounds check-fopenmp-g-pedantic errors-Wall-Wconversion-Wsurprising-Wunderflow-Wunused labels-Wline截断-W-o./s2>tmp;tmp和我以这种方式运行它,它在单个线程上正确结束,但仍然有错误的结果;所以这是我自己的责任2> &1./s1p2srfd04bar el04BAR.inp谢谢。大卫杜克使用俄语,我将尝试按照你提到的(1)做,即“学习足够的GDB来调试这个问题”;到目前为止,我只知道gdb的bt回溯;它告诉我程序在哪一行代码上崩溃。因此,我可以猜出哪个数组有问题,并更正其索引的计算。(几乎总是同一个问题,或者任何其他问题都太容易了)但是,使用OPENMP时,它会在主“PARALLEL DO”指令上崩溃,该指令的子句枚举程序中的所有变量,将它们放在一个线程的私有或所有线程之间共享。(续…)所以所有变量都在同一条指令上命名,我猜不出其中哪一个出错。顺便说一句,我不介意在这么慢的连接上调试,它给了我足够的提示,而且真的没有人能帮助我,因为连我公司的人都不懂fortran。再见,David@dva2tlse请再读一遍我的答案。您的问题不太可能与变量有关。您的第一步应该是查看导致崩溃的指令。除非您告诉我们该指令是什么(以及寄存器的值),否则您将得不到任何进一步的帮助。好的,我将在周一的工作中这样做,但我只是想知道我如何才能试着理解发生了什么。@dva2tlse我将重复最后一次:为了理解发生了什么,您的第一步应该是查看导致崩溃的指令。