Keine Ausgabe von print-Anweisungen in Fortran
Habe ich zusammengestellt, ein Programm ausführen, nacheinander (nicht parallel) in fortran 90. Ich bin versucht, um das Programm zu Debuggen mit print-Anweisungen, um zu überprüfen, meine rostigen gdb
fu. Ich bin kompilieren Sie die Dateien mit gfortran -c -O2 -ffast-math -ggdb
. Jedoch, keine dieser Aussagen alles drucken:
print *, variablename1, variablename2
write(6,*) variablename1, variablename2
write(*,*) variablename1, variablename2
Das kompilierte Programm druckt nichts und wird so ausgeführt, als wenn die Aussagen gibt es nicht. Könnte ich sein, fehlt etwas, was einfach und offensichtlich?
- Alle diese Ausgabe sollte. Wie sind Sie mit der ausführbaren Datei? In einem terminal-Fenster? Wahrscheinlich ist das problem in einem Aspekt, für die Sie noch keinen Informationen finden Sie hier. Ich schlage vor, die versuchen, eine kleinere test-Beispiel.
- Du hast Recht, mit einfacher Programme, das funktioniert... könnte es alles sein, was dazu führen würde, dass Sie es nicht drucken?
- Was erwartest du zu sehen? Sind deine Variablen holding leeren strings? Versuchen Sie, schreiben Sie auf eine nicht-preconnected Einheit und sehen, ob das fort.nn-Datei geöffnet wird. Was ist mit Pufferung? Hat Ihr Programm zum Absturz bringen, bevor der Puffer geleert werden? Verwenden Sie ein fflush () - Aufruf.
- Anstatt den Aufruf von flush() können Sie auch eine Umgebungsvariable GFORTRAN_UNBUFFERED_ALL.
- Danke!!! Diese sind hilfreich, führt. Ja-in diesem Fall sollten Sie
integer
Variablen, die initialisiert wurden, so sollte.gt.0
, aber ich werde in diesen Fragen. - es hat geklappt! Danke!!!
- Ich habe nicht versucht den flush-Aufruf, wird aber auch im Hinterkopf behalten für die nächste Zeit. Danke!
- Sie sind herzlich willkommen! Verdammt, ich sollte geschrieben haben, eine Antwort statt eines Kommentars 😉
- bitte! Und ich markieren Sie es als richtig.
- Danke, aber es ist okay. Andrej schlug praktisch die gleiche. Und trotzdem war es eher wie ein Kommentar als eine Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In die Kommentare es stellte sich heraus, dass es ein problem mit der Pufferung der Ausgabe-stream. Dies kann kontrolliert werden durch den Aufruf der
flush
Aussage, die nicht-standard -flush()
intrinsische Unterroutine oder durch compiler-spezifische Umgebungsvariablen, wieGFORTRAN_UNBUFFERED_ALL
.