2011-01-25 12 views
5

Necesito una forma de comprobar si mi aplicación de Android está siendo depurada o no (hay una condición que comprobamos al inicio que específicamente no quiero verificar cuando se está ejecutando el depurador). existe tal bestia?¿Cómo puedo saber si estoy en el depurador en Android?

+0

Lo encontré - android.os.Debug tiene métodos que puedo usar para esto. –

Respuesta

19

Debe mirar isDebuggerConnected.

Pero se considera una muy mala práctica hacer que el comportamiento de su aplicación dependa de si el depurador está conectado o no. Esto puede llevar a algunos errores difíciles de atrapar. Así que ten cuidado.

+0

Esto fue específicamente para realizar algunas tareas de limpieza en el caso de que la aplicación falle gravemente (por ejemplo, un kill -9 en adb), ya que la aplicación se agota cuando inicia el depurador (mata la ejecución anterior de la aplicación y comienza una nueva) para la depuración) Quería bloquear la colocación de una notificación de la mala salida, ya que pensé que eso molestaría a los desarrolladores que intentan depurar. –

+0

El comportamiento de la aplicación pequeña puede ser diferente en el depurador, en mi caso solicitando recursos xml "con formato bonito" de llamadas http cuando depuro, y obteniendo condensado de lo contrario. –

1

Puedo usar los métodos isDebuggerConnected y waitingForDebugger de android.os.Debug para detectar este estado.

+0

-1 porque es un duplicado de la respuesta de inazaruk – rds

+0

+1 También tiene la sugerencia útil de que hay un método 'waitingForDebugger' para cuando se ejecuta el código antes de que se conecte el depurador. Todo esto es muy útil cuando se depuran casos de prueba en una situación de subproceso concurrente para definir tiempos de espera excedidos. – zsawyer

Cuestiones relacionadas