Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Tutorial de Java - EL DEPURADOR DE JAVA - JDB

Tutorial de Java - EL DEPURADOR DE JAVA - JDB

 ***** (115 opiniones)
Creative Commons Tutorial de Agustín Froufe - 29 de Agosto de 2005
Temas Relacionados: Java
52. EL DEPURADOR DE JAVA - JDB
El depurador de Java, jdb es un depurador de línea de comandos, similar al que Sun proporciona en sus Sistemas, dbx. Es complicado de utilizar y un tanto críptico, por lo que, en principio, tiene escasa practicidad y es necesaria una verdadera emergencia para tener que recurrir a él.

Trataremos por encima los comandos que proporciona el jdb, pero sin entrar en detalles de su funcionamiento, porque no merece la pena. Casi es mejor esperar a disponer de herramientas visuales para poder depurar con cierta comodidad nuestro código Java.

Para poder utilizar el depurador, las aplicaciones Java deben estar compiladas con la opción de depuración activada, -g. Posteriormente se puede lanzar appletviewer con la opción de depuración, debug, y habremos puesto en marcha jdb.




Depurar HolaMundo


Hemos modificado nuestro applet de ejemplo para utilizarlo en nuestra sesión de ejemplo con el depurador. Se compilaría con el comando:

%javac -g hm.java

y el contenido de nuestro applet HolaMundo modificado y guardado en el fichero hm.java sería el siguiente:

Applet HolaMundo de ejemplo, para depurar import java.awt.Graphics; import java.applet.Applet; public class hm extends Applet { int i; public void paint( Graphics g ) { i = 10; g.drawString( "Hola Mundo!",25,25 ); } }

Una vez compilado, iniciamos la sesión lanzando el visor de applets de Sun con la opción de depuración, utilizando el comando:

%appletviewer -debug hm.html

El fichero hm.html contiene las líneas mínimas para poder activar el applet, estas líneas son las que reproducimos:

<html> <applet code=hm.class width=100 height=100> </applet> </html>

Se inicia pues la sesión con el depurador y vamos a ir reproduciendo lo que aparece en la pantalla a medida que vamos introduciendo comandos:

%appletviewer -debug hm.html Loading jdb... 0xee301bf0:class(sun.applet.AppletViewer) >




Comando help


El comando
help proporciona una lista de los comandos que están disponibles en la sesión de jdb. Esta lista es la que sigue, en donde hemos aprovechado la presencia de todos los comandos para comentar la acción que cada uno de ellos lleva a cabo.

>help
command list
threads [threadgroup] -- lista threads
thread <thread id> -- establece el thread por defecto
suspend [thread id(s)] -- suspende threads (por defecto, todos)
resume [thread id(s)] -- continúa threads (por defecto, todos)
where [thread id]|all -- muestra la pila de un thread
threadgroups -- lista los grupos de threads
threadgroup <name> -- establece el grupo de thread actual
print <id> [id(s)] -- imprime un objeto o campo
dump <id> [id(s)] -- imprime toda la información del objeto
locals -- imprime las variables locales de la pila actual
classes -- lista las clases conocidas
methods <class id> -- lista los métodos de una clase
stop in <class id>.<method> -- fija un punto de ruptura en un método
stop at <class id>:<line> -- establece un punto de ruptura en una línea
up [n frames] -- ascender en la pila de threads
down [n frames] -- descender en la pila de threads
clear <class id>:<line> -- eliminar un punto de ruptura
step -- ejecutar la línea actual
cont -- continuar la ejecución desde el punto de ruptura
catch <class id> -- parar por la excepción especificada
ignore <class id> -- ignorar la excepción especificada
list [line number] -- imprimir código fuente
use [source file path] -- ver o cambiar la ruta del fichero fuente
memory -- informe del uso de la memoria
load <classname> - carga la clase Java a ser depurada
run <args> - comienza la ejecución de la clase cargada
!! - repite el último comando
help (or ?) - lista los comandos
exit (or quit) - salir del depurador
>



Comando threadgroups


El comando
threadgroups permite ver la lista de threads que se están ejecutando. Los grupos system y main deberían estar siempre corriendo.

>threadgroups 1.(java.lang.ThreadGroup)0xee300068 system 2.(java.lang.ThreadGroup)0xee300a98 main >




Comando threads


El comando
threads se utiliza para ver la lista completa de los threads que se están ejecutando actualmente.

>threads Group system: 1.(java.lang.Thread)0xee300098 clock handler cond 2.(java.lang.Thread)0xee300558 Idle thread run 3.(java.lang.Thread)0xee3005d0 sync Garbage Collector cond 4.(java.lang.Thread)0xee300620 Finalizer thread cond 5.(java.lang.Thread)0xee300a20 Debugger agent run 6.(java.tools.debug.BreakpointHandler)0xee300b58) Breakpoint handler cond Group main: 7.(java.lang.Thread)0xee300048 main suspended >




Comando run


El comando
run es el que se utiliza para arrancar el appletviewer en la sesión de depuración. Lo teclearemos y luego volveremos a listar los threads que hay en ejecución.

>run run sun.applet.AppletViewer hm.html running... main[1]threads threads Group sun.applet.AppletViewer.main: 1.(java.lang.Thread)0xee3000c0 AWT-Motif running 2.(sun.awt.ScreenUpdater)0xee302ed0 ScreenUpdater cond. Waiting Group applet-hm.class: 3.(java.lang.Thread)0xee302f38 Thread-6 cond. Waiting main[1]

El visor de applets de Sun aparecerá en la pantalla y mostrará el conocido mensaje de saludo al Mundo. Ahora vamos a rearrancar el appletviewer con un punto de ruptura, para detener la ejecución del applet, y podamos seguir mostrando los comandos disponibles en el
jdb.

main[1]exit %appletviewer -debug hm.html Loading jdb... 0xee3009c8:class(sun.applet.AppletViewer) >stop in hm.paint Breakpoint set in hm.paint >run run sun.applet.AppletViewer hm.html running... Breakpoint hit: hm.paint(hm.java:9) AWT-Motif[1]




Comando where


El comando
where mostrará la pila de ejecución del applet.

AWT-Motif[1]where [1]hm.paint(hm.java:9) [2]sun.awt.motif.MComponentPeer.paint(MComponenetPeer.java:109) [3]sun.awt.motif.MComponentPeer.handleExpose(MComponenetPeer.java:170) AWT-Motif[1]




Comando use


El comando
use nos informa del camino donde jdb va a buscar los ficheros fuentes que contienen el código Java de las clases que se están depurando. Por defecto, utilizará el camino que se especifique en la variable de entorno CLASSPATH.

AWT-Motif[1]use /usr/local/java/classes: AWT-Motif[1]




Comando list


El comando
list mostrará el código fuente actual al comienzo del punto de ruptura que hayamos fijado.

AWT-Motif[1]list 9 public void paint( Graphics g ) { 10 => i = 10; 11 g.drawString( "Hola Mundo!",25,25 ) ; 12 } 13 } AWT-Motif[1]




Comando dump


El comando
dump nos permitirá ahora ver el valor del objeto g pasado desde el appletviewer.

AWT-Motif[1]dump g g = (sun.awt.motif.X11Graphics)0xee303df8 { int pData = 1342480 Color foreground = (java.awt.Color)0xee302378 Font font = (java.awt.Font)0xee302138 int originX = 0 int originY = 0 float scaleX = 1 float scaleY = 1 Image image = null } AWT-Motif[1]




Comando step


El comando
step nos porporciona el método para ejecutar la línea actual, que estará siendo apuntada por el indicador si hemos utilizado el comando list.

AWT-Motif[1]step Breakpoint hit: hm.paint(hm.java:11) AWT-Motif[1]list 9 public void paint( Graphics g ) { 10 i = 10; 11 => g.drawString( "Hola Mundo!",25,25 ); 12 } 13 } AWT-Motif[1]
Tabla de contenidos
  1. 1 - DECLARACIÓN DE INTENCIONES
  2. 2 - PRESENTACIÓN
  3. 3 - INTRODUCCIÓN A JAVA
  4. 4 - Origen de JAVA
  5. 5 - Características de JAVA
  6. 6 - HotJava
  7. 7 - JAVA para aplicaciones corporativas
  8. 8 - INSTALACIÓN DEL JDK
  9. 9 - Windows
  10. 10 - Solaris
  11. 11 - Linux
  12. 12 - Compilación sin JDK
  13. 13 - CONCEPTOS BÁSICOS DE JAVA
  14. 14 - Programación en JAVA
  15. 15 - Control del Flujo
  16. 16 - Clases
  17. 17 - Variables y Métodos de Instancia
  18. 18 - Alcance de Objetos y Reciclado de Memoria
  19. 19 - Herencia
  20. 20 - Control de Acceso
  21. 21 - Variables y Métodos Estaticos
  22. 22 - this y super
  23. 23 - Clases Abstractas
  24. 24 - Interfaces
  25. 25 - Métodos Nativos
  26. 26 - Paquetes
  27. 27 - Referencias
  28. 28 - Punteros y Referencias C
  29. 29 - Referencias en Java
  30. 30 - Referencias y Arrays
  31. 31 - Referencias y Listas
  32. 32 - Punteros C/C++ y Referencias Java
  33. 33 - PROGRAMAS BÁSICOS EN JAVA
  34. 34 - Una mínima aplicación en Java
  35. 35 - Compilación y Ejecución de HolaMundo
  36. 36 - El visor de Applets de Sun (appletviewer)
  37. 37 - Arquitectura de appletviewer
  38. 38 - Métodos de appletviewer
  39. 39 - Funciones de menú de appletviewer
  40. 40 - Un Applet basico en Java
  41. 41 - Compilación de un Applet
  42. 42 - La marca APPLET de html
  43. 43 - Atributos de APPLET
  44. 44 - Paso de parametros a Applets
  45. 45 - Tokens en parametros de llamada
  46. 46 - El parametro ARCHIVE
  47. 47 - Depuración general
  48. 48 - Ciclo de vida de un Applet
  49. 49 - Protección de Applets
  50. 50 - Escribir Applets Java
  51. 51 - La aplicación Fecha (Aproximación a OOP)
  52. 52 - EL DEPURADOR DE JAVA - JDB
  53. 53 - CLASES JAVA
  54. 54 - La clase Math
  55. 55 - La clase Character
  56. 56 - La clase Float
  57. 57 - La clase Double
  58. 58 - La clase Integer
  59. 59 - La clase Long
  60. 60 - La clase Boolean
  61. 61 - La clase String
  62. 62 - La clase StringBuffer
  63. 63 - Uso de Conversiones
  64. 64 - ABSTRACT WINDOW TOOLKIT (AWT)
  65. 65 - Interface de Usuario
  66. 66 - Estructura del AWT
  67. 67 - Componentes y Contenedores
  68. 68 - Tipos de Componentes
  69. 69 - BorderLayout
  70. 70 - CardLayout
  71. 71 - CheckboxGroup
  72. 72 - Color
  73. 73 - Component
  74. 74 - Button - Botones
  75. 75 - Canvas
  76. 76 - Checkbox
  77. 77 - Choice
  78. 78 - Container
  79. 79 - Label - Etiquetas
  80. 80 - List - Listas
  81. 81 - Scrollbar - Barras de desplazamiento
  82. 82 - TextComponent
  83. 83 - Fijar el tamaño preferido
  84. 84 - La clase Event
  85. 85 - FlowLayout
  86. 86 - Cambio de fuente de caracteres
  87. 87 - GridLayout
  88. 88 - GridBagLayout
  89. 89 - Uso de Insets
  90. 90 - MenuComponent
  91. 91 - LayoutManager
  92. 92 - Diseño de Componentes propios
  93. 93 - Creación de Aplicaciones con AWT
  94. 94 - Crear el Marco de la aplicación (Frame)
  95. 95 - Inicializar Fuentes, Colores, Layouts y demas recursos
  96. 96 - Crear menús y Barras de Menús
  97. 97 - Crear los controles, dialogos, ventanas, etc.
  98. 98 - Layouts
  1. 99 - FlowLayout
  2. 100 - BorderLayout
  3. 101 - GridLayout
  4. 102 - GridBagLayout
  5. 103 - CardLayout
  6. 104 - Crear un Layout propio
  7. 105 - Control de Eventos
  8. 106 - La clase Event
  9. 107 - Tipos de Eventos
  10. 108 - Generación y Propagación de Eventos
  11. 109 - Métodos de Control de Eventos
  12. 110 - Action_Event
  13. 111 - Mejorar el Diseño de Interfaces
  14. 112 - Cambio de Font de Caracteres
  15. 113 - Colores de Fondo y Texto
  16. 114 - Fijar el Tamaño Preferido
  17. 115 - Uso de Insets
  18. 116 - Habilitar y Deshabilitar Componentes
  19. 117 - Botón Grafico
  20. 118 - GRÁFICOS
  21. 119 - Métodos para Dibujos
  22. 120 - Líneas
  23. 121 - Rectangulos
  24. 122 - Círculos, Elipses
  25. 123 - EXCEPCIONES EN JAVA
  26. 124 - Funciones Graficas
  27. 125 - Manejo de Excepciones
  28. 126 - Fractales
  29. 127 - Generar Excepciones en Java
  30. 128 - Líneas Flotantes
  31. 129 - Excepciones Predefinidas
  32. 130 - Métodos para Imagenes
  33. 131 - Crear Excepciones Propias
  34. 132 - Doble Buffering de Graficos
  35. 133 - Capturar Excepciones
  36. 134 - Nuevas Clases para Dibujo
  37. 135 - Propagación de Excepciones
  38. 136 - La Clase MediaTracker
  39. 137 - THREADS Y MULTITHREADING
  40. 138 - Sonido en Java
  41. 139 - Flujo en Programas
  42. 140 - Entrada por Ratón
  43. 141 - Creación y Control de Threads
  44. 142 - Arrancar y Parar Threads
  45. 143 - Suspender y Reanudar Threads
  46. 144 - Estados de un Thread
  47. 145 - Scheduling
  48. 146 - Prioridades, demonios...
  49. 147 - Ejemplo de Animación
  50. 148 - Comunicación entre Threads
  51. 149 - MÉTODOS NATIVOS
  52. 150 - Escribir Código Java
  53. 151 - Compilar el Código Java
  54. 152 - Crear el fichero de Cabecera
  55. 153 - Crear el fichero de Stubs
  56. 154 - Escribir la función C
  57. 155 - Crear la Librería Dinamica
  58. 156 - Ejecutar el Programa
  59. 157 - ENTRADA / SALIDA ESTÁNDAR
  60. 158 - La clase System
  61. 159 - Clases comunes de Entrada/Salida
  62. 160 - FICHEROS EN JAVA
  63. 161 - Ficheros
  64. 162 - Streams de Entrada
  65. 163 - Streams de Salida
  66. 164 - Ficheros de Acceso Aleatorio
  67. 165 - COMUNICACIONES EN JAVA
  68. 166 - Comunicaciones en Unix
  69. 167 - Sockets
  70. 168 - Diferencias entre Sockets Stream y Datagrama
  71. 169 - Uso de Sockets
  72. 170 - Dominios de Comunicaciones
  73. 171 - Modelo de Comunicaciones con Java
  74. 172 - Apertura de Sockets
  75. 173 - Creación de Streams
  76. 174 - Cierre de Sockets
  77. 175 - Mínimo Cliente SMTP
  78. 176 - Servidor de Eco
  79. 177 - Cliente/Servidor TCP/IP
  80. 178 - Servidor Simple de HTTP
  81. 179 - Red en Windows '95 (sin conexión)
  82. 180 - Clases Útiles en Comunicaciones
  83. 181 - ARQUITECTURA MVC EN JAVA
  84. 182 - La Arquitectura MVC
  85. 183 - Observador y Observable
  86. 184 - Cómo utilizar Observer y Observable
  87. 185 - Ejemplo de aplicación MVC
  88. 186 - APLICACIONES EN JAVA
  89. 187 - Etiqueta
  90. 188 - Reloj Digital
  91. 189 - Persiana
  92. 190 - Solapas
  93. 191 - Transparencia
  94. 192 - Calculadora
  95. 193 - Cuenta-Kilómetros
  96. 194 - Cartel
  97. 195 - FINAL Y AGRADECIMIENTOS
  98. 196 - JAVA Y MATLAB
Autor y licencia de 'Tutorial de Java - EL DEPURADOR DE JAVA - JDB'
Agustín Froufe Extraído de: http://www.publispain.com/supertutoriales/

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Tutorial de Java - EL DEPURADOR DE JAVA - JDB'

La idea es dar una guía ordenada para el estudio de este lenguaje, muy poderoso... Más »
Si su programa es software libre, básicamente es ético--pero hay una trampa de la que... Más »
Este tutorial presenta los conceptos básicos de líneas de transmisión (Transmission lines), así como una... Más »
PHP se ha convertido en el lenguaje de facto de Internet y no es difícil... Más »
Si tuviera que buscar un adjetivo para calificar a Sendmail, pensaría en "excesivo". Excesivo puesto... Más »
Gente Wiki
Ana Rivera
Trabajo la línea ecologista dentro del turismo, siempre he amado la naturaleza y me han interesado las formas alternativas de...
Melissa Lucy Sabino Parra
Licenciada de la universidad nacional mayor de san marcos (unmsm) - educación - especialidad de idioma extranjero: ingles e...
Luis Barragan
Hola soy profesor de filosofía, con un postitulo en informática educativa, me gusta tanto la tecnología como el arte, los...
Facturación, Instalación,...
Roberto Sánchez
Soy historiador y estoy dedicado a la difusión del conocimiento histórico a través de radio y televisión, con proyectos propios....
Dirección cinematográfica
Arturoc
Me desempeño como especialista de contabilidad del ministerio de educación de la república de cuba.
Creación y gestión de equipos, Fraude,...
Pablo Navajo
Psicologo. Experto en voluntariado y gestion de ong.
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?