2017-07-08 34 views
1

我试图在Mac OS 10.12.5系统上用lldb断点Fortran程序。我有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代码吗?

回答

2

看来,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) 
+0

我实际上更喜欢与GD工作湾然而在10.12.5这并不像听起来那么容易。我尝试过编码调配,但这还不够。我得到一个错误'在启动程序终止信号?,未知信号'。我正试图解决这个问题,但迄今为止没有奏效。该主题已在其他SO线程中讨论,请参阅https://stackoverflow.com/questions/40052171/gdb-terminated-with-signal-unknown-signal) – Manfredo

+0

lakeslove在上述评论中给出的解决方案解决了该问题。最后gdb正在工作... – Manfredo

+0

在我的情况:10.12.4 - 它工作得很好。也许,的确,10.12.5有一些问题。 – mko

相关问题