¿Cómo puedo escribir el código que puede comportarse de manera diferente en tiempo de ejecución en modo "depuración" (invocado como "Depurar como aplicación Java" en eclipse) desde el modo "ejecutar" (por ejemplo, invocado como "Ejecutar como aplicación Java" en eclipse ")? Es decir, por ejemplo, el código puede imprimir" Haha, estás en depuración "cuando" Depurar como aplicación Java "pero no imprimir nada cuando" Ejecutar como aplicación Java "(no quiero agregar ningún argumento cuando invocando el método principal). ¿Hay algún método general para implementar esto que pueda funcionar en cualquier IDE, como eclipse, IntelliJ, etc.?¿Cómo sé que mi código se está ejecutando en modo "depuración" en IDE?
Respuesta
Lo he implementado de la siguiente manera: Examino los parámetros de JVM y busco uno que sea -Xdebug
. Por favor, vea el código.
private final static Pattern debugPattern = Pattern.compile("-Xdebug|jdwp");
public static boolean isDebugging() {
for (String arg : ManagementFactory.getRuntimeMXBean().getInputArguments()) {
if (debugPattern.matcher(arg).find()) {
return true;
}
}
return false;
}
Funciona para mí porque eclipse ejecuta una aplicación que se depura como un proceso separado y se conecta a ella mediante JDI (Java Debugging Interface).
que estaría feliz de saber si esto funciona con otros entornos de desarrollo (por ejemplo, IntelliJ)
+1: 'debubg '?? ;) Puede establecer un campo estático para DEPURAR en lugar de crear un patrón estático ya que no esperaría que cambie. –
Gracias, @Peter Lawrey. Parece que funcionó para mí porque agregué jdwp. Arreglaré esto en mi código. – AlexR
La diferencia entre estos modos es que en el modo de depuración su IDE se conectará a la aplicación recién ejecutada con un depurador (típicamente a través de un zócalo binario). Tener un depurador conectado permite que el IDE descubra puntos de interrupción, excepciones, etc. Esto no sucederá en el modo normal .
No existe una manera estándar y fácil de usar para distinguir entre el modo de depuración y el normal del código de Java.
- 1. Versión vs Modo de Depuración en IDE
- 2. Ejecutando RSpec en modo de depuración
- 3. ¿Cómo saber en qué cuenta se está ejecutando mi código ASP.NET?
- 4. Averiguar qué línea de código está ejecutando actualmente mi aplicación en el modo de depuración de Visual Studio
- 5. ¿Cómo le digo que mi código se está ejecutando en Mono?
- 6. ¿Cómo sé que mi aplicación está desinstalada del dispositivo ...?
- 7. Detectar si mi aplicación se está ejecutando en el IDE "Delphi 2007 .Net"
- 8. ¿Cómo puedo detectar si un control de usuario se está ejecutando en el IDE, en el modo de depuración o en el EXE liberado?
- 9. iPad en modo horizontal está escalando hasta mi sitio - No sé cómo solucionarlo
- 10. ¿Cómo sé en qué columna está mi cursor en Xcode?
- 11. Acelerando Tomcat en modo de depuración con Eclipse IDE
- 12. Depuración de mi código en IntelliJ
- 13. ¿Cómo puedo detectar si mi código se está ejecutando en la consola en Rails 3?
- 14. Comprobando si el código se ejecuta en modo de depuración
- 15. ¿Cómo activar ReportMemoryLeaksOnShutdown solo en modo de depuración?
- 16. cómo detectar mediante programación si mi aplicación se está ejecutando en IIS 7.0 modo integrado dentro de una página ASP.NET
- 17. Depuración en XCode - ejecutando código y puntos de corte
- 18. ¿Cómo identificar que se está ejecutando en una máquina virtual?
- 19. ¿Hay alguna forma de determinar si el código GWT se está ejecutando en modo de desarrollo?
- 20. Xcode/iOS: ¿Cómo determinar si el código se está ejecutando en la compilación DEBUG/RELEASE?
- 21. cómo ver qué código javascript se está ejecutando actualmente?
- 22. ¿Está ejecutando un servicio de Windows en modo consola?
- 23. .net: depurador que resalta la línea de código que en realidad no se está ejecutando
- 24. ¿Qué me proporciona el PDB durante la depuración y cómo sé que está funcionando?
- 25. ¿Cómo puedo verificar que mi código multiproceso se esté ejecutando realmente en varios hilos?
- 26. Periodictask no se está ejecutando
- 27. ¿Cómo hacer que mi aplicación .NET en ejecución pueda recibir comandos mientras se está ejecutando?
- 28. ¿Cómo modificar el código de Java mientras se ejecuta en modo de depuración?
- 29. Cómo crear un hilo que corre todo el tiempo que mi aplicación se está ejecutando
- 30. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
Este tema se trata en este hilo: http://stackoverflow.com/questions/1109019/determine-if-a-java-application-is-in-debug-mode-in-eclipse –