Ayant des problèmes avec un Rapport de Crash - EXC_BAD_ACCESS
OK, j'ai DONC reçu un rapport d'incident pour une de mes applications, mais je vous jure que je suis à 100% confus.
C'est ce que le "noyau" de la partie de ça ressemble :
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Regions Near 0:
-->
__TEXT 0000000100000000-0000000100015000 [ 84K] r-x/rwx SM=COW /Applications/MY_APP/Contents/MacOS/MY_APP
Application Specific Information:
objc[337]: garbage collection is ON
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_c.dylib 0x00007fff90128650 strlen + 16
1 MY_BUNDLE_ID 0x0000000100008f12 0x100000000 + 36626
2 MY_BUNDLE_ID 0x000000010000b435 0x100000000 + 46133
3 MY_BUNDLE_ID 0x0000000100003c90 0x100000000 + 15504
4 com.apple.CoreFoundation 0x00007fff9065147a _CFXNotificationPost + 2554
5 com.apple.Foundation 0x00007fff8e5fe846 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
6 com.apple.AppKit 0x00007fff9a7894a7 -[NSTableView textDidChange:] + 377
7 com.apple.CoreFoundation 0x00007fff9065147a _CFXNotificationPost + 2554
8 com.apple.Foundation 0x00007fff8e5fe846 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
9 com.apple.AppKit 0x00007fff9a15c260 -[NSTextView(NSSharing) didChangeText] + 339
10 com.apple.AppKit 0x00007fff9a7f8381 _NSDoUserReplaceForCharRange + 390
11 com.apple.AppKit 0x00007fff9a7f85b1 _NSDoUserDeleteForCharRange + 38
12 com.apple.AppKit 0x00007fff9a7e1e72 -[NSTextView(NSKeyBindingCommands) deleteBackward:] + 440
13 com.apple.AppKit 0x00007fff9a18a1cc -[NSResponder doCommandBySelector:] + 75
14 com.apple.AppKit 0x00007fff9a18a02e -[NSTextView doCommandBySelector:] + 197
15 com.apple.AppKit 0x00007fff9a20cf4e -[NSKeyBindingManager(NSKeyBindingManager_MultiClients) interpretEventAsCommand:forClient:] + 2200
16 com.apple.AppKit 0x00007fff9a20c3bb -[NSTextInputContext handleEvent:] + 939
17 com.apple.AppKit 0x00007fff9a20bf87 -[NSView interpretKeyEvents:] + 183
18 com.apple.AppKit 0x00007fff9a158f67 -[NSTextView keyDown:] + 723
19 com.apple.AppKit 0x00007fff9a374120 -[NSWindow sendEvent:] + 9687
20 com.apple.AppKit 0x00007fff9a36f744 -[NSApplication sendEvent:] + 5761
21 com.apple.AppKit 0x00007fff9a2852fa -[NSApplication run] + 636
22 com.apple.AppKit 0x00007fff9a229cb6 NSApplicationMain + 869
23 MY_BUNDLE_ID 0x0000000100002014 0x100000000 + 8212
Avez-vous une idée de ce qui pourrait mal se passer?
Ou pourriez-vous m'indiquer la bonne direction?
En aparté :
Quelqu'un pourrait-il me guider comment faire par exemple 0x00007fff90128650
plus... de sens et d'en faire (dans un avenir rapport de crash) montrent également le nom de la fonction?
Vous devez symbolicate ce rapport de crash de sorte que vous pouvez voir les références de votre propre code. Les lignes 1, 2 et 3 de la trace de la pile sont à partir de votre propre application. Une fois que vous symbolicate ce rapport, vous verrez exactement la ligne de code qui est à l'origine du problème.
Et... comment dois-je faire? J'avoue que je sais presque rien sur la prise de l'utilisation de rapports d'incident, de ne me donner quelques lignes directrices ou de me pointer à une pièce de référence serait l'idéal. Merci beaucoup! 🙂
Regardez la Note Technique TN2151 dans les docs. Il explique comment le faire.
Merci beaucoup! Je suis étudiant à l'instant.
Juste remarqué : j'ai fait toutes les choses décrites, mais j'ai ensuite réalisé que c'était un iOS approche spécifique. Mon rapport de crash est pour Mac OS X, hein?
Et... comment dois-je faire? J'avoue que je sais presque rien sur la prise de l'utilisation de rapports d'incident, de ne me donner quelques lignes directrices ou de me pointer à une pièce de référence serait l'idéal. Merci beaucoup! 🙂
Regardez la Note Technique TN2151 dans les docs. Il explique comment le faire.
Merci beaucoup! Je suis étudiant à l'instant.
Juste remarqué : j'ai fait toutes les choses décrites, mais j'ai ensuite réalisé que c'était un iOS approche spécifique. Mon rapport de crash est pour Mac OS X, hein?
OriginalL'auteur Dr.Kameleon | 2012-10-14
Vous devez vous connecter pour publier un commentaire.
Votre crash vous donner beaucoup d'informations:
d'abord vous s'est écrasé parce que vous avez essayé d'accéder à l'adresse 0 sur otre programme et le noyau n'est pas heureux.
Voir, vous bénéficiez d'une segmentation, par la façon dont il commence à l'adresse 0x00, donc c'est comme vous avez directement accès à un 0 /pointeur nul.
Comme ce
Vous devriez vraiment se concentrer sur cela.
De l'accident de la pile il y a trois choses intéressantes:
[textDidChange] est l'un des dernier appel qui a causé le crash, par la façon dont vous êtes l'envoi d'une notification lorsque le [textDidChange] est déclenché. Et la dernière ligne qui, en fait, faire de l'incident: strlen + 16 est parce qu'il y a quelque chose qui pense qu'il peut obtenir un char longueur à partir d'un pointeur valide l'adresse et c'est pas vraiment le cas.
Selon moi, vous devriez vérifier ce que vous envoyez dans votre notification.
Lorsque vous regardez profondément dans la pile de crash, il semble vraiment que c'est apparaissant lorsque vous faites de la cellule d'insertion /délétion dans ur tableViewController. Vous devez vérifier que parfois quelqu'un de pousser des données non valides, ou à ne pas la modifier la cellule de la façon dont il est censé être.
Alors, voici le résumé:
1 Quelqu'un modifier un tableViewCell, il n'a pas insérer de code ou de ne pas insérer de ce qu'il est censé être.
2 Vous êtes l'envoi d'une notification de non-valide les données à l'intérieur.
3 Lorsque le strlen(invalid_dataStructure) est déclenché, il ur app crash
Par la façon dont je suis juste de "deviner", car je ne sais pas en fait votre mise en œuvre du code. Mais j'espère que cela peut vous donner beaucoup d'indices pour votre session de débogage.
OriginalL'auteur Mr Bonjour
Habituellement, le problème, c'est que vous avez besoin d'un "conserver" à la propriété.
Vous devez activer Zombies pour le mode debug.
dans xCode 4 cliquez sur "modifier le régime"->"Diagnostics"->"Activer Zombie Objets"
Il va vous montrer dans la console ce de la "suppression" de l'objet que vous essayez d'accéder au moment de la défaillance.
cela devrait aider.
vous verrez quelque chose comme ceci:
Vous pouvez également activer "Malloc enregistrement" et après un crash entrer dans une telle commande dans la console de débogage:
vous y trouverez toutes allocation/libération de la pile. il suffit de regarder à la libération et alloc commandes.
C'est un problème). pour moi, le meilleur moyen est de demander à des étapes à reproduire et à essayer de le reproduire à l'échelle locale.
"Habituellement, le problème, c'est que vous avez besoin d'un "conserver" à la propriété". Pas vraiment, puisque les Codes d'Exception: KERN_INVALID_ADDRESS à 0x0000000000000000 est vraiment pas pointin à certaines des ordures valeur du pointeur
OriginalL'auteur Remizorrr
J'ai eu une très semblables rapport de crash en essayant d'ouvrir lourds graphiques des applications (pymol et foulques) (Voir ci-dessous)
J'ai découvert que si j'ai déconnecté mon mac à partir de mon moniteur externe, le programme a de nouveau fonctionné. J'ai été en utilisant un USB-connecteur HDMI - apparemment, c'est une mauvaise idée. Je viens d'acheter un microUSB-connecteur HDMI et j'espère que cela fonctionnera mieux. Les programmes de s'exécuter si je peu utiliser mon mac book propres de l'affichage du moniteur.
OriginalL'auteur NicoWheat