EXC_BAD_ACCESS für NSLog ohne Formatierung der Zeichenfolge

7

Ich erhalte einen EXC_BAD_ACCESS (oder einen malloc-Fehler) in der folgenden Codezeile:

%Vor%

Das macht für mich keinen Sinn, da es auf eine String-Konstante und nichts anderes zugreifen sollte. Es ist normalerweise ein EXC_BAD_ACCESS, aber es ist gelegentlich der folgende Fehler (in derselben Zeile):

%Vor%

Der Stack-Trace für den malloc-Fehler (ich habe es schwer, einen vollen Fehler zu bekommen) lautet:

%Vor%

Es kann von Bedeutung sein, dass es sich bei der fraglichen Datei um eine Objective-C ++ - Datei mit aktiviertem ARC handelt. Die Methode selbst ist riesig, also habe ich hier gesetzt, um die Frage kurz zu halten. Die fragliche Zeile ist Zeile 94. Jede Idee, wie man sie reparieren oder debuggen kann, wird sehr geschätzt. Danke im Voraus!

Schnellbearbeitung:

Ich erhalte jetzt auch Seitenfehler. Aus dem Debugger:

%Vor%     
Haldean Brown 08.03.2012, 05:36
quelle

4 Antworten

4

In den Kommentaren schlug ich vor:

  

Das Problem ist nicht mit NSLog . Das Problem ist wahrscheinlich, dass etwas Speicher kaputt geht und der Absturz in NSLog verursacht wird. Es würde wahrscheinlich helfen, wenn Sie die Methode, die Sie verwenden, aufschlüsseln können, um das Lesen zu erleichtern, vielleicht sogar die Funktionalität in ein neues Objekt zu trennen. Vermeiden Sie auch die Verwendung von magischen Zahlen (3 und 6).

Es scheint, dass @haldean mit diesem Vorschlag gegangen ist und das Problem aufgespürt hat. Ich kann keinen Kredit dafür beanspruchen, die harte Arbeit des Aufspürens des Problems wirklich zu machen, aber ich bin froh, dass der Vorschlag geholfen hat.

    
ThomasW 09.03.2012, 01:33
quelle
26

Alte Frage, aber in Swift erhalten Sie dieses Problem, wenn Sie eine codierte URL protokollieren, die '%' enthält - Zum Beispiel:

%Vor%

Stattdessen wird es mit params funktionieren:

%Vor%     
Mark 14.04.2015 15:32
quelle
0

Das erste, was ich versuchen würde (nach der Zombiejagd oder vielleicht vorher in diesem Fall), ist, die Build-Verzeichnisse zu löschen und eine neue Wiederherstellung durchzuführen. Manchmal können Überbleibsel aus früheren Builds seltsame Probleme verursachen.

    
drekka 08.03.2012 06:53
quelle
0

es gibt% in string, ersetzen Sie% durch %%

%Vor%     
wulie 26.08.2017 07:55
quelle