2017-05-02 1 views
1

Wenn meine App abstürzt, wenn ich mit Xcode verbunden bin, erhalte ich alle Informationen, die ich zum Debuggen und Beheben des Problems benötige. Aber nicht, wenn die App abstürzt, wenn sie nicht mit Xcode verbunden ist, Ich weiß nicht, ob es ein nil unwrap war, ein Assertionsfehler oder eine Ausnahme.Wie kann ich den Grund für den Absturz in Absturzprotokollen angeben?

In den letzten beiden Fällen fehlt auch die Assertion- oder Exception-Nachricht.

Wie bekomme ich Xcode, um diese Informationen in die Absturzprotokolle aufzunehmen?

Ich habe "Strip-Debug-Symbole während der Kopie" und "Strip verknüpfte Produkt" auf NO gesetzt, und das Debug Information Format für Debug-Builds ist mit dSYM auf DWARF gesetzt. Und ja, ich installiere Debug Builds auf meinem Handy. Ich bekomme eine symbolische Stack-Trace, aber nicht die oben genannten Informationen.


Fall 1: auspacken nil: Die Zeile „fatale Fehler: unerwartet gefunden null, während ein optionalen Wert auspackt“ im Crash-Protokoll fehlt.

Fall 2: Assertionsfehler: Wenn ich habe:

assert(level > 2, "Level should've been at least 2") 

"Stufe sollte mindestens 2 war" im Crash-Protokoll nicht angezeigt. Manchmal sagt es nicht einmal, dass es aufgrund eines Assertionsfehlers abgestürzt ist (im Gegensatz zu einem anderen Grund).

Fall 3: Ausnahme: Die Ausnahmemeldung wie die folgenden fehlt:

Terminating app due to uncaught exception 'NSGenericException', reason: '*** -[AVCaptureDevice setTorchMode:] May not be called without first successfully gaining exclusive ownership of the device using -lockForConfiguration:'

Manchmal ist es nicht einmal sagen, dass es aufgrund einer Ausnahme abgestürzt (im Gegensatz zu einem anderen Grunde entgegengesetzt) .

Wie bekomme ich Abstürze, wenn ich nicht mit Xcode verbunden bin, um alle Informationen zu erhalten, die ich bei Abstürzen bekomme, wenn ich mit Xcode verbunden bin?

Antwort

0

Der beste Ansatz ist die Verwendung eines Analysetools. Werfen Sie einen Blick auf Fabric

+0

Das ist eine Option, aber im Moment suche ich nicht in der Produktion, sondern während des Testens. –

+0

Sie können auch während des Tests loggen und es aus der Produktion nehmen, wenn Sie es nicht dort wollen. – Malik

+0

Ich weiß, aber die Frage ist, wo es etwas einfacher ist, wenn ich will, dass es nur auf meinem eigenen Telefon funktioniert. Wenn es abstürzt, wenn ich es das nächste Mal mit Xcode verbinde, sollte es mir die Informationen geben, die in der Frage erwähnt werden. –

Verwandte Themen