Je travaille sur une application iOS et j'ai remarqué un bug qui ne peut être reproduit que lorsque l'application est construite en mode release. Le seul moyen que j'ai trouvé pour exécuter une application en mode de publication que j'ai créée consiste à créer une archive, à la signer avec mon profil de débogage et à effectuer un déploiement ad hoc sur mon appareil. En utilisant cette méthode, cependant, je ne peux pas attacher avec un débogueur, et je ne suis même pas sûr de pouvoir l'attacher si cela fonctionnerait bien après que la compilation ait exécuté l'exécution de l'optimiseur sur le code.
Est-ce que quelqu'un connaît un bon moyen de déboguer un problème qui ne peut être reproduit que si une application est construite en mode de publication?
L’optimisation est désactivée (-O0
) pour faciliter le débogage, alors que l’optimisation est activée pour les versions de Release (-O3
ou -Os
), ce qui accélère l’exécution du code, mais rend également le débogage plus difficile (mais pas impossible). Vous pouvez simplement aller dans les paramètres de construction dans Xcode dans la configuration de débogage et augmenter temporairement le niveau d'optimisation - cela conservera tous les autres objets de débogage (symboles, etc.), mais nous espérons également effacer le bogue du mode de publication. (N'oubliez pas de réinitialiser le niveau d'optimisation sur -O0
dans la configuration de débogage lorsque vous avez terminé!)
Vous ne pouvez pas exécuter une application en mode de publication tant que le débogage est activé. Ce n'est pas prévu.
Lorsque vous exécutez une application en mode édition, vous devez trouver un moyen différent d’observer le comportement de votre application (par exemple, en utilisant des alertes).
De plus, vous devrez faire confiance au profil de distribution sur votre appareil. Xcode vous avertira et vous guidera avec un message d'alerte lors de la première exécution.
Pour déboguer une application iOS en mode édition, modifiez les paramètres suivants: Paramètres de construction -> Déploiement -> Post-traitement du déploiement -> Version -> définissez la valeur sur "NON".
Définissez la valeur 'Non' sur 'Deployment Post Processing: Release'