web-dev-qa-db-fra.com

L'application Android se bloque avec SIGABRT Signal 6 uniquement lors du débogage Eclipse

J'ai une application qui fonctionne parfaitement sur un appareil sans débogueur attaché. Cependant, j'ai un problème lors du débogage dans Eclipse:

Lorsque le thread principal est suspendu pendant environ 10 secondes ou plus (par exemple, après avoir atteint un point d'arrêt), il lance un SIGABRT, provenant apparemment de la libc. 

La seule explication à laquelle je puisse penser est que la file de messages sur le thread principal, lorsqu'elle n'est pas interrogée, déborde de messages provenant d'un autre thread. Cependant, je ne vois pas le tas grandir lorsque le thread principal est suspendu. En outre, bien que mon application comporte environ 20 unités d'exécution entre tous les services, fournisseurs de contenu, récepteurs de diffusion, unités d'exécution de travail de carte et de travail, etc., je ne peux vraiment pas penser à une source de messages excessifs.

Ma question est donc la suivante: comment résoudre ce problème? Quels outils puis-je utiliser et comment puis-je trouver ce qui provoque le blocage de mon application alors qu'elle est suspendue dans le débogueur?

Modifier 1:  

La seule chose dans logcat est:

02-05 22:23:54.861: I/dalvikvm(26795): threadid=3: reacting to signal 3
02-05 22:23:54.901: D/dalvikvm(26795): threadid=1: still suspended after undo (sc=1 dc=1)
02-05 22:23:54.901: I/dalvikvm(26795): Wrote stack traces to '/data/anr/traces.txt'
02-05 22:23:58.905: A/libc(26795): Fatal signal 6 (SIGABRT) at 0x000002f5 (code=0), thread 26795 (om.myapp)

Edit 2:

Une enquête plus poussée m'amène à croire que c'est Android qui tue intentionnellement mon processus car il pense à tort que le fil de l'interface utilisateur est bloqué. Le problème n'est pas dans mon application. Alors maintenant, ma question est: comment puis-je empêcher Android de tuer mon processus lors du débogage?

45
zyamys

Android tue intentionnellement le processus parce qu'il pense que le fil de l'interface utilisateur est bloqué, ce qui en fait un droit ANR ... pour le débogage, vous pouvez,

Allez dans Paramètres -> Options du développeur et cochez Afficher toutes les ANR.

Cela affichera une boîte de dialogue «App not Responding» pour les applications exécutées en arrière-plan. Vous pouvez cliquer sur le bouton Attendre dans la boîte de dialogue pour empêcher le système de tuer votre processus tant que le débogueur n’attache pas ..___. Notez que la boîte de dialogue s’ouvre automatiquement pour les applications exécutées au premier plan. Pour les applications en arrière-plan, vous devez activer cette option

24
Aditya

Cela a commencé à m'arriver dans Android 7.1.1

Lors de la connexion du débogueur, mon application se bloquait toujours, de même que lors du démarrage de l'application en mode débogage.

Ce qui l'a corrigé pour moi est simplement:

  • Lancez votre application
  • Cliquez sur "Mute Breakpoints" dans Debug
  • Attacher le débogueur
  • Cliquez à nouveau sur "Couper les points d'arrêt" pour réactiver le son.
  • Terminé, le débogage fonctionne à nouveau
7
sam

J'ai eu des problèmes similaires, mais ce que Sam a suggéré n'a pas aidé - je devais réellement SUPPRIMER les points d'arrêt, puis cela a fonctionné pour moi.

1
DustinB

J'ai dû réinstaller Android studio une fois et la deuxième fois, il est parti tout seul. 

0
Kingsley Mitchell