2017-07-08 1 views
1

J'essaye de casser un programme fortran avec lldb sur un système de Mac OS 10.12.5. JeEst-ce que lldb travaille avec fortran?

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

write(*,*) a, b 
end 

I (doivent) compilez avec les compilateurs intel.

ifort -g badcall.f90 -o badcall 

alors je cours avec lldb et faire

breakpoint set -f badcall.f90 -l 5 

programmes arrête normalement

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   

Cependant, si j'essaie alors d'imprimer la b variables je reçois rien

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

Alors, je manque quelque chose? Est-ce que lldb est réellement utilisable pour déboguer le code fortran?

Répondre

2

Il semble que LLDB ne supporte pas Fortran, encore :(Vous devez aller avec 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 

Assurez-vous de code Connectez-vous gdb Suivez les instructions ici:

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

et vous devriez être bon d'aller

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

Je préférerais vraiment travailler avec GD b. Cependant, le 10.12.5, ce n'est pas aussi facile que ça en a l'air. J'ai essayé de coder mais ce n'est pas suffisant. Je reçois une erreur 'Au cours du programme de démarrage terminé avec le signal ?, Signal inconnu». J'essaye de résoudre ceci mais jusqu'ici n'a pas fonctionné. Le sujet a déjà été discuté dans d'autres threads SO, voir https://stackoverflow.com/questions/40052171/gdb-terminated-with-signal-unknown-signal) – Manfredo

+0

La solution donnée par lakeslove dans le commentaire mentionné ci-dessus a résolu le problème. Enfin gdb fonctionne ... – Manfredo

+0

Dans mon cas: 10.12.4 - ça marche très bien. Peut-être, en effet, 10.12.5 a quelques problèmes. – mko