2010-03-13 4 views
4

Existe-t-il une taille maximale d'exécutables ou d'exécutables + objets partagés sur l'iPhone? J'ai développé une application qui s'est plantée au démarrage ou au début de l'exécution avec SIGSYS. La suppression du code du programme a aidé, bien que la structuration des données pour que le code ne soit simplement pas exécuté ne l'est pas.Taille maximale de l'exécutable sur l'iPhone?

Cela pourrait être une corruption de mémoire, d'une certaine sorte, mais quand j'ai compilé avec -Os plutôt que -O2 ou -O3 la taille de mon exécutable descend de 5,15 Mo à 3,60 Mo et l'application fonctionne parfaitement. J'ai aussi un tas de bibliothèques que j'utilise, bien sûr.

Je me demande s'il y a une limite à la taille du code exécutable sur l'iPhone? Ou suis-je juste "chanceux" et cache la corruption de la mémoire quand j'utilise -Os?

Répondre

0

Vous manquez probablement de mémoire. Avez-vous des avertissements de mémoire?

+0

Je ne manque pas de mémoire. Quand je compile avec -Os je peux aller assez loin dans mon programme pour charger plusieurs mégaoctets de données. Je n'ai plus de mémoire avant, mais seulement après avoir chargé beaucoup plus que cela. – Sirp

+0

Dans ce cas, je vais devoir être d'accord avec @marcc; ton insecte est ailleurs et tu as de la chance. –

2

S'il existe une taille maximale, vous ne pouvez pas l'utiliser avec un fichier d'application de 5,15 ou 3,60 Mo. Vous avez un bug différent dans votre application.

Vous avez de la chance.

0

Il existe une taille d'exécutable maximale pour la distribution via le magasin d'applications, mais le matériel lui-même n'impose aucune restriction inhabituelle.

Votre problème est probablement lié à l'une de vos bibliothèques. Lequel, basé sur votre description de la complexité de votre application, n'est pas une observation utile de ma part. Étant donné le modèle avec les options du compilateur, je vais supposer que vous avez une bibliothèque qui a un problème et que la compilation plus stricte provoque l'exclusion de ce code. Sous la rubrique d'un longhot, vous pouvez également regarder des ressources telles que des images. J'ai vu quelques cas au cours des deux dernières années où des ressources apparemment inoffensives ont déclenché des erreurs fatales quand ils ont chargé.

0

J'ai rencontré exactement le même problème. Dans quelques dizaines ou centaines de C++ kloc je n'ai jamais eu de problèmes. Maintenant, je copie essentiellement & collé une classe et renommé deux boutons et je reçois une violation d'accès au démarrage.

Aucun du nouveau code n'est jamais exécuté, simplement lié parce que je prends l'adresse d'une fonction. L'unité de compilation nouvellement liée ne s'appuie pas sur un seul symbole statique de l'extérieur qui pourrait provoquer l'exécution de code d'arrière-plan.

Le débogueur ne pointe pas vers un emplacement utile. Mon exécutable est d'environ 3,6 Mo.