2016-10-27 2 views
1

Crashes & section ANR de console développeur Google Play fournit ce genre de commentaires en cas de panne de code natif sur l'appareil de l'utilisateur:JNI crashlog: source de détermination de la ligne de fichier avec sortie STACKTRACE

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
Build fingerprint: '...' 
Revision: '...' 
ABI: 'arm' 
pid: ...., tid: ...., name: .... >>> com.package <<< 
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 
<registers> 
backtrace: 
    #00 pc 003ba9be /data/app/com.package/lib/arm/libx.so (sl_setVolumeSound(unsigned int, float)+105) 
    #01 pc 003b9db7 /data/app/com.package/lib/arm/libx.so (Audio::setVolumeSound(unsigned int, float)+106) 

jusqu'à présent, si bon. Mais comment peut-on déterminer une ligne de code source hors décalage de bytecode (?), Comme +105 pour la fonction sl_setVolumeSound dans l'exemple de sortie ci-dessus?

J'apprécierais particulièrement une solution qui fonctionnerait complètement dans la ligne de commande macosx, sans IDEs engagés.

Répondre

0

ndk-stack est spécialement adapté à cette fin. Notez que pour le faire fonctionner, vous avez besoin d'une version non dépouillée de vos bibliothèques natives. Plus de détails here.

+0

Exactement ce que j'ai cherché, merci! En pointant sur obj/local/armeabi/*, la bibliothèque non désinscrite est également sauvegardée beaucoup de mon temps. On dirait que je ne peux pas faire grand-chose en ce moment, avoir à mettre à jour les scripts jenkins pour archiver cette lib .so libérée avec d'autres versions – bigblackdot