Seite 1 von 1

Fehlerausgabe umleiten?

Verfasst: Mittwoch 20. Oktober 2010, 22:42
von theliquidwave
Hallo,
kurz zur aktuellen Lage: Python 2.7 wird in ein Spiel integriert.
Problem: Falls Fehler auftreten, werden diese nicht in der Console des Spiels angezeigt.
Das komische daran ist aber, dass alles was ich mit "print" schreibe, sehr wohl in der Console des Spiels angezeigt wird?!

Wie leite ich nun die Tracebacks auf die Console um? Jedes mal ein

Code: Alles auswählen

if (PyErr_Occured())
{
    PyErr_Print();
}
kann doch nicht die Lösung sein, oder?

Habe schon versucht, dass ``traceback``-Module umzuschreiben:

Code: Alles auswählen

	PyObject *pyTraceback = PyImport_ImportModule("traceback");
	if (pyTraceback)
	{
		PyObject *pyPrintException = PyObject_GetAttrString(pyTraceback, "print_exception");

		if (pyPrintException)
		{
			PySys_SetObject("excepthook", pyPrintException);
			Py_DECREF(pyPrintException);
		}

		Py_DECREF(pyTraceback);
	}
Aber das ändert nichts, Fehler werden nicht angezeigt :/

Bin dankbar für Tipps!

Gruß

Re: Fehlerausgabe umleiten?

Verfasst: Mittwoch 20. Oktober 2010, 23:53
von BlackJack
@Chrisber: Wird `sys.stderr` denn in die Konsole vom Spiel umgeleitet oder nur `sys.stdout`?

Re: Fehlerausgabe umleiten?

Verfasst: Donnerstag 21. Oktober 2010, 00:07
von theliquidwave
Keine Ahnung. Ich habe nichts gemacht um irgendwas umzuleiten. Das "print" funktioniert anscheinend ganz von selbst.

Edit: habe mal alles 3 ausgegeben im Script:

Code: Alles auswählen

print "via print-Statement"
sys.stdout.write("via sys.stdout")
sys.stderr.write("via sys.stderr")
Es wird jeder Satz angezeigt (Windows).

Gruß