PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umleiten der Standardausgabe


FlashBurn
2004-05-24, 20:15:00
Ich schreibe gerade an einem Parser und dieser gibt mir nun Debug Informationen aus. Das können aber je nach Datei so viele werden das die nicht mehr alle auf 4 Seiten (Shell) passen. Deswegen leite ich die Ausgabe immer in eine Datei um. Das Problem was ich nun habe ist, das diese Datei nur eine begrenzte Größe bei mir hat (65.3kb)?! Wie kann man das ändern?

P.S.
Ich nutze Win2k!

Nagelbrett
2004-05-25, 10:40:04
du meinst du machst es an der shell mit... "dateiname > log.txt" .. oder? wenn das auf 64kb limitiert ist kannst du da wohl nichts ändern

wieso lässt du nicht einfach die ausgabe direkt von deinem programm in eine datei speichern?

FlashBurn
2004-05-25, 12:42:01
das hatte ich eigentlich nicht vor, da ich mir gerne die Option offen gehalten hääte ob ich es in der Shell oder in einer Datei ausgebe. Aber ich werd es dann wohl direkt in eine Datei schreiben!

Trotzdem danke!

ethrandil
2004-05-25, 14:41:21
Original geschrieben von FlashBurn
gerne die Option offen gehalten hääte ob ich es in der Shell oder in einer Datei ausgebe
Führe doch einen Parameter für die Shell ein.
Beispiel:
> programm -debug
führt zur normalen Ausgabe und
> programm -debug:log.txt
zu einer Ausgabe in eine Datei, oder ähnlich.

- Eth

FlashBurn
2004-05-25, 15:03:43
Ich schreibe die Infos jetzt zwar in eine Datei, aber ich habe noch ein älteres Programm gefunden und dort habe ich genau die selbe Methode verwendet, aber dort können die Dateien sogar mehrere MB groß sein? Also liegt es nicht an der Shell, aber am Programm kann es auch nicht liegen. Ich bin im Moment einfach überfragt woran es liegen soll :(

gsgs
2004-05-25, 15:46:12
Das mit der Shell hab ich auch grade ausprobiert. Die Ausgabe war fast 2MB gross. Also daran kann es wirklich nicht liegen, wie du schon vermutet hast.

Kannst du mal den Codeausschnitt posten? Vielleicht ist es der verwendete Variablentyp (char array o.ä.). Welche Sprache benutzt du denn überhaupt, oder hab ich das überlesen?

Xmas
2004-05-25, 15:59:47
Was haben Variablentypen oder die Programmiersprache mit der Umleitung von stdout auf eine Datei via Shell zu tun?

Lrrr
2004-05-25, 16:58:07
Original geschrieben von Xmas
Was haben Variablentypen oder die Programmiersprache mit der Umleitung von stdout auf eine Datei via Shell zu tun?

Vielleicht hat er ja in seiner Programmlogik dahingehend einen Fehler, dass die Daten gar nicht erst größer als 64kb werden.

@FlashBurn: es würde helfen, wenn Du einmal den entscheidenden Code der Ausgabe posten könntest, bzw. überhaupt mal sagst, welche Sprache zu verwendest, vielleicht kann Dir dann geholfen werden ;)

FlashBurn
2004-05-25, 19:57:18
Ich programmiere in C und nutze VC++ zum übersetzen. Ich habe wie gesagt noch ein anderes Progg das auch in C geschrieben ist und wenn ich dort die Daten in eine Datei umleite, dann kann die Datei auch mehrere MB groß werden (95MB)! Ich gebe die Daten an mehreren Stellen über printf aus! Daher müsste ich ne ganze Menge posten, aber wenn ihr wollt dann poste ich den Code mal!

HellHorse
2004-05-25, 20:17:06
Oder man loggt.
z.b mit log4cxx (http://logging.apache.org/log4cxx/manual/Introduction.html)

gsgs
2004-05-25, 21:56:38
Original geschrieben von Lrrr
Vielleicht hat er ja in seiner Programmlogik dahingehend einen Fehler, dass die Daten gar nicht erst größer als 64kb werden.Jou. Genau das habe ich gemeint Xmas. Wenn ich eine Integervariable auf stdout ausgebe und dann keine Nachkommastellen habe, dann liegt das ja auch nicht an stdout, sondern an dem von vornherein falsch gewählten Datentyp.

Vielleicht verwendet er ja ein 64kb großes Chararray. Möglicherweise startet er aber die Shell zwischendrin neu und hat deshalb auch immer einen neuen stdout.

FlashBurn
2004-05-26, 01:16:57
Nix mit Char Array! Zumal was hat das mit der Ausgabe zu tun?! Ich schreibe die Daten ja nicht in ein Char Array sondern gebe sie direkt mit printf auf stdout aus!

ethrandil
2004-05-26, 06:11:18
Mach doch mal gleich zu Beginn deines Programms eine Schleife, die alleine schon mehr als besagte 64kb ausgibt.

Wird die Datei auch dann nicht größer? Dann liegt es wirklich an was anderem.

- Eth

gsgs
2004-05-26, 08:19:18
Original geschrieben von FlashBurn
Nix mit Char Array! Zumal was hat das mit der Ausgabe zu tun?!char test[100] = "Dies ist ein Test.\n";
printf ("%s", test); // char Array
printf ("%s", "Dies ist ein Test.\n"); // direkte AusgabeIch schreibe die Daten ja nicht in ein Char Array sondern gebe sie direkt mit printf auf stdout aus! Da du keinen Code gepostet hast, müssen wir bei der Fehlersuche weiter raten. Wir können ja nicht wissen, dass du die Daten direkt auf stdout ausgibst.

FlashBurn
2004-05-27, 11:45:14
Ich habe jetzt mal noch andere Dateien als die die ich schon genutzt habe durch den Parser gejagt und siehe da ein Paar schaffen es und ein Paar kommen nicht durch, geben aber auch keinen Fehlerwert zurück(??)! Ich werde mir jetzt mal angucken wo das Problem noch liegen könnte!

Edit::

Das passt jetzt zwar nicht mehr ganz zum Thema, aber egal. Was gibt es für gründe wenn folgender Code ausgeführt wird:


int status;

printf("starte...");
status= meine_funktion(parameter);
printf("beendet");

int meine_funktion(parameter)
{
code
fprintf(debug,"EOF");
fclose(debug);
return 0;
}


Eigentlich müsste ich jetzt auf meiner Shell "starte...beendet" stehen haben, aber es steht nur "starte.." da! Allerdings steht in der Datei als letztes "EOF"!

Gast
2004-05-27, 14:53:09
Wenn du mit dem Debugger schrittweise durchläufst, wird dann die Zeile printf("beendet"); überhaupt erreicht?