2010-10-25 2 views
3

Quelqu'un a-t-il déjà vu un journal de plantage comme celui-ci avant où la bibliothèque UIKit et les autres bibliothèques système ne sont pas symbolisées? Une de nos applications a un problème avec le plantage sur le lancement mais seulement un petit nombre d'utilisateurs (comme 5) connaissent le problème. (À ma connaissance le default.png est affiché, puis il plante) et nous n'avons pas pu le reproduire. Il ne semble pas y avoir quelque chose d'inconscient dans le code et j'ai exécuté l'analyseur statique et cela ne montre aucun problème. Mais le fait que le UIKit et d'autres bibliothèques ne sont pas symbolisées est étrange pour moi. J'ai recherché libSystem.B.dylib 0000000000 0 + 0 et il y a quelques hits sur google à ce sujet et une connexion avec les bibliothèques statiques. Ce projet utilise des bibliothèques statiques, mais je suppose que s'il y avait un problème avec eux, il ne fonctionnerait pas sur n'importe quel appareil, pas seulement sur un couple.Le journal de plantage d'Iphone ne symbolise pas les appels UIKit

Exception Type: EXC_BAD_ACCESS (SIGBUS) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libSystem.B.dylib    0000000000 0 + 0 
1 UIKit       0x0068a0dc 0x66c000 + 123100 
2 MyApp       0x000307b2 -[RootViewController defaultImage]  (RootViewController.m:39) 
3 MyApp       0x00030720 -[RootViewController loadView] (RootViewController.m:49) 
4 MyApp       0x00030182 -[RootViewController loadView] (RootViewController.m:43) 
5 MyApp       0x00031894 -[AppDelegate applicationDidFinishLaunching:] (AppDelegate.m:52) 
6 UIKit       0x31ada4b8 0x31acc000 + 58552 
7 UIKit       0x31ad09e2 0x31acc000 + 18914 
8 UIKit       0x31b29fd8 0x31acc000 + 384984 
9 UIKit       0x31b298fc 0x31acc000 + 383228 
10 UIKit       0x31b29332 0x31acc000 + 381746 
11 GraphicsServices    0x3026c046 0x30267000 + 20550 

Ceci est la méthode defaultImage dans son intégralité

-(UIImage*)defaultImage 
{ 
    return [UIImage imageNamed: @"Default.png"]; 
} 

Nous avons obtenu le ipa d'un des utilisateurs et l'Default.png ne semble pas être corrompu.

Répondre

2

Xcode n'inclut plus tout pour chaque version d'iOS sur chaque périphérique. Au lieu de cela, il va retirer des informations de l'appareil.

Déterminez le système d'exploitation et le périphérique que ces utilisateurs utilisent (c'est probablement la même chose) et branchez-en un sur votre Mac. Xcode va profiter de ce dont il a besoin.

+0

Malheureusement, il était hors de l'appareil d'un client, mais votre droit de le résoudre le problème le plus probable. Nous avons trouvé le bug, ne jamais remplacer les méthodes dans une classe avec une catégorie. – jjburka

+0

c'est pourquoi ça ne fonctionnait pas, merci! – mgrandi

+0

Même problème, mais il n'y a pas d'additions remplaçant les méthodes (elles sont préfixées) dans l'application (peut-être dans une librairie tierce ...) Y a-t-il un moyen de détecter les méthodes surchargées dans les additions? –

0

Je peux confirmer qu'à l'occasion, j'ai également eu cela avec les journaux de plantage pour mon application. Jusqu'à présent, je n'ai pas été capable de les symboliser davantage. Il ne semble pas y avoir de raison pour que certains d'entre eux symbolisent complètement et d'autres non.

Avez-vous fait une archive et construire pour la version que vous avez soumis à l'App Store? Pour une raison quelconque, XCode semble être beaucoup mieux à symboliser les logs des versions d'applications archivées, donc je m'assure de toujours le faire. Maintenant, en ce qui concerne le crash, est-il possible que vous affichiez l'écran de démarrage à partir d'un thread d'arrière-plan? Cela ne causera pas de crash sur tous les périphériques, mais sur certains (encore une fois il n'y a aucune raison pour laquelle il plante certains périphériques et pas d'autres que j'ai trouvés). J'ai été affecté par cela sur mon application, car elle ne s'est pas écrasée sur le simulateur ni sur aucun de mes périphériques, mais elle a bloqué un petit pourcentage des périphériques de mes utilisateurs. Je faisais mon initialisation en utilisant un thread d'arrière-plan, et j'ai seulement lu plus tard que vous ne pouvez utiliser UIKit qu'à partir du thread principal. Je l'ai changé et n'avait plus de problème.

+0

le rapport lit le thread 0 – justin

+0

La version soumise a été archivée. Mais il est bon de savoir que quelqu'un l'a déjà rencontré auparavant. – jjburka

+0

En ce qui concerne votre autre question, je ne touche que l'interface utilisateur sur le fil principal – jjburka

Questions connexes