2011-01-12 16 views
1

Ich habe einen seltsamen app Absturz:Incomprehensible app Absturz auf altem iPod/iPhone

  • stürzt auf dem iPod 2G (iOS 4.2) und die iPhone 3G (iOS 3.1.3), sondern läuft auch auf dem iPhone 4, iPad und Simulator
  • es jedes Mal in der gleichen Zeile stürzt mit „EXC_BAD_INSTRUCTION“ (einer kleinen Zeit nach ca. Abschuss)
  • es bei Aufruf Systemfunktionen stürzt ab: zum ersten Mal bei alListenerf (...), dann, wenn ich kommentiere diese Linie es stürzt bei mmap (...) ab, und nachdem ich es bei glBindFramebufferOES (...) kommentiert, meinen Code zwischen diesen Funktionen
  • gut ausführend

Ich profilierte die App mit Instrumenten, die denken, dass das Problem mit Speicher ist, aber es gibt genug freien Speicher auf dem Gerät im Moment des Absturzes. Früher habe ich einen ähnlichen Absturz beim Release-Build in Bezug auf "Level of Optimization" -Einstellung (Absturz bei "Fast" und "Faster", funktioniert bei "None") getroffen, aber jetzt stürzt es in Debug- und Release-Builds ab. Sieht so aus, als gäbe es einen gerätespezifischen Fehler.

Vielleicht hat jemand das gleiche Problem gelöst, ich sollte dankbar sein für Hilfe.

+0

Gegeben, wo dies abstürzt (Speicher-beschränkte Geräte und Codezeilen, die mit Speicherzugriff umgehen), klingt es wirklich wie ein Speicherproblem irgendeiner Art. Verwenden Sie das Memory Monitor-Instrument, um festzustellen, dass Sie sich auf diesen älteren Geräten unter der Hard-Kill-Leitung befinden? Wenn Sie nur freien Speicherplatz auf dem Gerät haben, bedeutet das nicht, dass das System Ihre Anwendung nicht beendet, wenn sie einen bestimmten Schwellenwert überschreitet. –

+0

ist glBindFrambufferOES eine OpenGL ES-Funktion? OpenGL ES wird nur auf dem iPhone 3GS und iPod touch 3G und höher unterstützt. – ughoavgfhw

+0

@ughoavgfhw - Das ist falsch. 'glBindFrambufferOES()' ist OpenGL ES 1.1, das auf allen iOS-Geräten, auch älteren, unterstützt wird. Wenn es 'glBindFrambuffer()' war, ist das OpenGL ES 2.0, das nur auf iPhone 3G S und neueren Geräten verfügbar ist. –

Antwort

1

Stellen Sie sicher, dass Sie Anweisungen für die Prozessoren arm6 und arm7 generieren. Die älteren Telefone verstehen den neueren Arm7-Befehlssatz nicht.

+0

Architekturen sind korrekt: Die App läuft auf armv6. Es stürzt einige Zeit (~ 5s) nach dem Start ab, nachdem ein Code ausgeführt wurde. – brigadir