web-dev-qa-db-fra.com

Obtention d'informations à partir du fichier de rapport d'erreur .ips

J'ai testé mon application sur iPhone 5 et 4s. Et puis j'ai envoyé mon application au testeur, il a un iPhone 5s. Tout était bien. Après un certain temps, lorsque j'ai ajouté des fonctionnalités à l'application, je lui ai envoyé une autre version, mais maintenant il dit qu'elle se bloque au lancement. Sur mes appareils, tout va bien. Je lui ai demandé de m'envoyer des rapports de crash. Voici le fichier .ips:

{"bundleID”:"name.my-app","app_name”:”my-app","bug_type":"109","name”:”my-app","os_version":"iPhone OS 7.1 (11D167)","version":"1.0 (1.0)"}
Incident Identifier: 3916. . .194
CrashReporter Key:   58fd. . .7399
Hardware Model:      iPhone6,2
Process:             my-app [277]
Path:                /var/mobile/Applications/0AB0. . .B5B/my-app.app/my-app
Identifier:          name.my-app
Version:             1.0 (1.0)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2014-03-27 02:10:39.959 +0400
OS Version:          iOS 7.1 (11D167)
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  24

Last Exception Backtrace:
(0x1893e2950 0x1958e81fc 0x1893e2890 0x1000f09a0 0x195ec0014 0x195ebffd4 0x195ec64a8 0x195ec24c0 0x195ec70f4 0x195ec74fc 0x1960556bc 0x19605554c)

Thread 0:
0   libsystem_kernel.dylib          0x0000000195fbdca0 0x195fbc000 + 7328
1   CoreFoundation                  0x00000001893a2570 0x1892d8000 + 828784
2   CoreFoundation                  0x00000001893a0764 0x1892d8000 + 821092
3   CoreFoundation                  0x00000001892e16cc 0x1892d8000 + 38604
4   GraphicsServices                0x000000018efc5c08 0x18efb8000 + 56328
5   UIKit                           0x000000018c412fd8 0x18c398000 + 503768
6   my-app                      0x00000001000f1ae8 0x1000dc000 + 88808
7   libdyld.dylib                   0x0000000195edba9c 0x195ed8000 + 15004

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

Thread 24 Crashed:
0   libsystem_kernel.dylib          0x0000000195fd658c 0x195fbc000 + 107916
1   libsystem_c.dylib               0x0000000195f6a804 0x195f08000 + 403460
2   libc++abi.dylib                 0x0000000195190990 0x195190000 + 2448
3   libc++abi.dylib                 0x00000001951adc28 0x195190000 + 121896
4   libobjc.A.dylib                 0x00000001958e84d0 0x1958e0000 + 34000
5   libc++abi.dylib                 0x00000001951ab164 0x195190000 + 110948
6   libc++abi.dylib                 0x00000001951aaa7c 0x195190000 + 109180
7   libobjc.A.dylib                 0x00000001958e8314 0x1958e0000 + 33556
8   CoreFoundation                  0x00000001893e288c 0x1892d8000 + 1091724
9   my-app                      0x00000001000f099c 0x1000dc000 + 84380
10  libdispatch.dylib               0x0000000195ec0010 0x195ebc000 + 16400
11  libdispatch.dylib               0x0000000195ebffd0 0x195ebc000 + 16336
12  libdispatch.dylib               0x0000000195ec64a4 0x195ebc000 + 42148
13  libdispatch.dylib               0x0000000195ec24bc 0x195ebc000 + 25788
14  libdispatch.dylib               0x0000000195ec70f0 0x195ebc000 + 45296
15  libdispatch.dylib               0x0000000195ec74f8 0x195ebc000 + 46328
16  libsystem_pthread.dylib         0x00000001960556b8 0x196054000 + 5816
17  libsystem_pthread.dylib         0x0000000196055548 0x196054000 + 5448

Thread 25:
0   libsystem_kernel.dylib          0x0000000195fd6e74 0x195fbc000 + 110196
1   libsystem_pthread.dylib         0x0000000196055548 0x196054000 + 5448

Thread 26:
0   libsystem_kernel.dylib          0x0000000195fd6e74 0x195fbc000 + 110196
1   libsystem_pthread.dylib         0x0000000196055548 0x196054000 + 5448

Thread 24 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x00000001035de7b8
    x4: 0x0000000000002060   x5: 0x00000001035de870   x6: 0x000000000000006e   x7: 0x0000000000000640
    x8: 0x000000000c000000   x9: 0x0000000004000000  x10: 0x0000000098d956f7  x11: 0x0000000000000300
   x12: 0x0000000000000000  x13: 0x0000000000000000  x14: 0x0000000000000000  x15: 0x0000000195f83dcb
   x16: 0x0000000000000148  x17: 0x00c8d95a0138084d  x18: 0x0000000000000000  x19: 0x0000000000000006
   x20: 0x00000001035e0000  x21: 0x000000017013b5d8  x22: 0x000000017013b600  x23: 0x000000015d610870
   x24: 0x00000001963068e8  x25: 0x0000000100100000  x26: 0x0000000198d87c40  x27: 0x000000017026c2c0
   x28: 0x000000000000000a  fp: 0x00000001035de7f0   lr: 0x000000019605916c
    sp: 0x00000001035de7d0   pc: 0x0000000195fd658c cpsr: 0x00000000

Binary Images:
0x1000dc000 - 0x1000f7fff my-app arm64  <d6f1f532dfbc36c497acefc4aa2c7f2f> /var/mobile/Applications/0AB088E7-6425-4287-9C4B-1EEF37E7DB5B/my-app.app/my-app
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
0x19606c000 - 0x19608ffff libxpc.dylib arm64  <7077afbad955309d8cb9965960c781f3> /usr/lib/system/libxpc.dylib

Je lisais beaucoup de questions similaires ici, et ils disent que je dois symboliser ce .ips via le terminal. Mais ça ne marche pas. atos command retourne qu'il ne peut pas lire my-app.app, xcrun atos renvoie la même adresse mémoire que celle que je spécifie.

xcrun atos -Arch arm64 -o 'my-app.app' 0x196054000 + 5448
0x196054000
+
5448

Je ne suis pas sûr, dois-je spécifier ce numéro +, mais cela ne fonctionne pas sans lui aussi.

Merci d'avance, j'apprécierais toute aide.

MISE À JOUR:

Je l’ai compris. Quelque chose ne va pas avec NSFileManager, il agit différemment sur 64 bits et 32 ​​bits

[fileManager fileExistsAtPath:pathToCacheDir isDirectory:&isDirectory];

isDirectory renvoie NON, bien que pathToCacheDir soit un répertoire valide, c'est pourquoi j'ai obtenu une exception. Mais la question est toujours valable, comment puis-je obtenir des rapports plus compréhensibles de la part des testeurs?

23
Alfred Zien

Je viens de recevoir un tas de .ips fichiers d'un utilisateur Windows et se demandait quoi en faire aussi. Les renommer en .crash a rendu Xcode heureux de les importer (allez dans l'Organiseur, dans les journaux des périphériques de bibliothèque et importez) et de les symboliser.

edit: Quand j'ai écrit cette réponse à l'origine, c'était avec Xcode 6 à l'esprit. Les nouvelles versions de Xcode (7+ je pense) ont changé la donne. selon Apple :

Xcode tentera automatiquement de symboliser tous les rapports d'erreur qu'il rencontre. Pour symboliser, il vous suffit d'ajouter le rapport de plantage à l'organisateur Xcode.

  1. Connectez un appareil iOS à votre Mac
  2. Choisissez "Appareils" dans le menu "Fenêtre"
  3. Dans la section "APPAREILS" de la colonne de gauche, choisissez un appareil
  4. Cliquez sur le bouton "Afficher les journaux des périphériques" dans la section "Informations sur les périphériques" sur le panneau de droite
  5. Faites glisser votre rapport d'erreur sur la colonne de gauche du panneau présenté
  6. Xcode symbolisera automatiquement le rapport de plantage et affichera les résultats
47
Isaac

Lorsque vous utilisez atos, la première adresse des images binaires doit être spécifiée et la commande doit être exécutée à partir du répertoire où se trouvent les fichiers .app et .dsym.

La commande suivante fonctionnera alors: atos -o [my-app.app/my-app] -Arch [par exemple armv7] -l [première adresse de la section d'image binaire du fichier ips] [toutes les adresses de la dernière section de retour d'exception]

et dans votre cas:

atos -o my-app.app/my-app -Arch arm-64 -l 0x1000dc000 0x1893e2950 0x1958e81fc 0x1893e2890 0x1000f09a0 0x195ec0014 0x195ebffd4 0x195ec64a8 0x195ec24c0 0x195ec70f4 0x195ec74fc 0x1960556bc 0x19605554c
2
leokash