2017-07-08 33 views
1

私は、Mac OS 10.12.5システムでlldbのfortranプログラムをブレークポイントしようとしています。私はI(に持っている)は、インテルのコンパイラでコンパイルlldbはfortranと連携していますか?

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

write(*,*) a, b 
end 

を持っています。

ifort -g badcall.f90 -o badcall 

その後、私は、変数bを印刷しようとした場合、私は何を取得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   

を停止して行う

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

何か不足していますか? lldbは本当にfortranコードをデバッグするのに使えますか?

答えて

2

あなたがGDBに行く必要があります:(lldbは、Fortranをサポートしていないようだ、まだ:

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

、あなたは、私が実際に多くのGDでの作業を好むだろう

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

を行くために良いことがありますb。しかし、10.12.5では、聞こえるほど簡単ではありません。私はcodesigningを試みたが、それは十分ではない。 「スタートアッププログラムがシグナルで終了しましたか?」というエラーが発生しました。私はこれを修正しようとしていますが、これまでのところうまくいきませんでした。このトピックはすでに他の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

関連する問題