【问题标题】:Is lldb working with fortran?lldb 是否与 fortran 一起工作?
【发布时间】:2017-07-08 17:05:58
【问题描述】:

我正在尝试在 Mac OS 10.12.5 系统上使用 lldb 对 fortran 程序进行断点。我有

program badcall
      integer a,b
      a=2
      b=3

write(*,*) a, b
end

我(必须)使用英特尔编译器进行编译。

ifort -g badcall.f90 -o badcall

然后我使用lldb 运行并执行

breakpoint set -f badcall.f90 -l 5

程序正常停止

Process 59474 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000f35 prova`MAIN__ at badcall.f90:6
   3          a=2
   4          b=3
   5          

但是,如果我尝试打印变量 b 我什么也得不到

(lldb) p b
(lldb) print b
(lldb) q

所以我错过了什么吗? lldb真的可以调试fortran代码吗?

【问题讨论】:

    标签: macos debugging fortran intel lldb


    【解决方案1】:

    似乎 lldb 不支持 Fortran,但 :( 你将不得不使用 gdb:

    curl "http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz" -o gdb-8.0.tar.gz
    tar zxf gdb-8.0.tar.gz
    cd gdb-8.0
    ./configure
    make
    

    确保对 gdb 进行代码签名!按照此处的说明进行操作:

    https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html

    你应该很高兴

    gfortran -g -o fort_sample ./fort_sample.f90
    gdb ./fort_sample
    (gdb) list
    1   program badcall
    2         integer a,b
    3         a=2
    4         b=3
    5
    6   write(*,*) a, b
    7   end
    (gdb) break 6
    Breakpoint 1 at 0x100000e0e: file ./fort_sample.f90, line 6.
    (gdb) run
    ...
    ...
    badcall () at ./fort_sample.f90:6
    6   write(*,*) a, b
    (gdb) print a
    $1 = 2
    (gdb) print b
    $2 = 3
    (gdb)
    

    【讨论】:

    • 我实际上更喜欢使用 gdb。然而,在 10.12.5 上,它并不像听起来那么容易。我已经尝试过代码设计,但这还不够。我收到一个错误During startup program terminated with signal ?, Unknown signal。我正在尝试解决此问题,但到目前为止还没有成功。该主题已在其他 SO 线程中讨论过,请参阅 stackoverflow.com/questions/40052171/…)
    • lakeslove 在上述评论中给出的解决方案解决了这个问题。终于 gdb 工作了...
    • 就我而言:10.12.4 - 它工作得很好。也许,确实,10.12.5 有一些问题。
    • 无论如何,我想这个问题与 lldb 是否支持 fortran 更相关。我会接受你的回答并接受它(作为不......不幸的是苹果)。
    • 我明白你的意思。事实上,这个解决方案是一种解决方法。英特尔论坛(前段时间)有一个讨论:software.intel.com/en-us/forums/debug-solutions/topic/622923 - 所以,我想,我们能做的就是等待。
    猜你喜欢
    • 2014-10-30
    • 2011-10-05
    • 2011-03-01
    • 2015-07-28
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多