2017-07-08 9 views
1

Ich versuche, ein Fortran-Programm mit lldb auf einem Mac OS 10.12.5 System zu unterbrechen. Ich habeArbeitet lldb mit Fortran?

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

write(*,*) a, b 
end 

I (zu haben) kompilieren mit den Intel-Compiler.

ifort -g badcall.f90 -o badcall 

dann laufe ich mit lldb und tun

breakpoint set -f badcall.f90 -l 5 

Programme stoppt normalerweise

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   

aber wenn ich dann die Variable b zu drucken versuchen, bekomme ich nichts

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

Also fehlt mir etwas? Ist lldb wirklich zum Debuggen von Fortran-Code geeignet?

Antwort

2

Es scheint, dass LLDB nicht Fortran unterstützt, noch :(Sie mit gdb gehen:

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 

Achten Sie auf die gdb-Code-Zeichen folgen hier Anweisungen:

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

und Sie sollten gut sein

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

gehen würde ich viel tatsächlich mit gd bevorzugen Arbeits b. Am 10.12.5 ist es jedoch nicht so einfach wie es klingt. Ich habe versucht, Codesignierung, aber das ist nicht genug. Ich bekomme einen Fehler 'Während Startup-Programm mit Signal beendet?, Unbekanntes Signal'. Ich versuche das zu beheben, aber bisher hat es nicht funktioniert. Das Thema wurde bereits in anderen SO-Threads diskutiert, siehe https://stackoverflow.com/questions/40052171/gdb-termined-with-signal-unknown-signal. – Manfredo

+0

Die Lösung, die lakeslove im oben genannten Kommentar gegeben hat, behob das Problem. Endlich funktioniert gdb ... – Manfredo

+0

In meinem Fall: 10.12.4 - es funktioniert gut. Vielleicht hat 10.12.5 tatsächlich einige Probleme. – mko