Ir al contenido principal

DEPURACION DE PROGRAMAS

Depuración de programas es el proceso de identificar y corregir errores de programación.
En inglés se le conoce como debugging, ya que se asemeja a la eliminación de bichos (bugs), manera en que se conoce informalmente a los errores de programación. Se dice que el término bug proviene de la época de las computadoras de válvula termoiónicabulbos, en las cuales los problemas se generaban por los insectos que eran atraídos por las luces y estropeaban el equipo.





La depuración de un programa es la forma de saber si un programa contiene errores o no, así mismo también nos ayuda a corregir dichos errores.


Se dice que un programa esta depurado cuando esta libre de errores.


Cuando se depura un programa se hace un seguimiento del funcionamiento de dicho programa y se van estudiando los valores de las distintas variables, así como los resultados obtenidos en las operaciones.


Una vez depurado el programa se solucionan los posibles errores encontrados y se procede a depurar otra vez.


Estas acciones se repiten hasta que el programa no contiene ningún tipo de errores, tanto en tiempo de programación como en tiempo de ejecución.




“DEBUG”


El "Debug" es una utilidad de MS-DOS que permite visualizar memoria, introducir programas en ella y rastrear su ejecución. Una característica de debug es que despliega todo el código del programa en formato hexadecimal.


Es importante saber que muchos usos de este tipo de utilidades de bajo nivel, requieren un funcionamiento stand-alone, es decir, fuera de un sistema operativo multi-usuario, ya que éstos encapsulan y ocultan muchos aspectos del hardware.



Debug es Útil para:



  • Ensamblar pocas líneas de código

  • Des-ensamblar código en RAM, ROM y ejecutable

  • Correr paso-a-paso programas

  • Desplegar datos en memoria

  • Verificar estado de los registros del CPU

Comandos de debug:


El ingreso a "Debug" se realiza de forma sencilla a partir de la ventana de comandos de Windows, tipeando Debug. Luego aparcera el prompt que es un guión.
Para acceder a la ayuda escribimos "?" en donde tenemos la descripción de comandos.



  • A: ASSEMBLE [dirección]
    Parámetros:

Sin parámetros ensambla las instrucciones que se introduzcan, guardándolas en la dirección siguiente a la que se llegó en el último "a". Cuando se utiliza este comando se le puede dar como parámetro la dirección donde se desea que se inicie el ensamblado, si se omite el parámetro el ensamblado se iniciará en la localización especificada por CS:IP, usualmente 0100H, que es la localización donde deben iniciar los programas con extensión .COM, y será la localización que utilizaremos debido a que debug solo puede crear este tipo específico de programas.




  • COMPARE (C) C

Este comando compara y reporta diferencias entre los contenidos de dos bloques de memoria.
La sintaxis es:
es la dirección de inicio y fin de un bloque o, si se preceden con "L", la dirección de inicio y la longitud del bloque; es el inicio de otro bloque. Se presupone que la longitud de ambos bloques es la misma.




  • D: DUMP D [intervalo]
    Muestra el contenido de una zona de memoria en hexadecimal y en ASCII. Sin parámetros muestra los primeros 128 bytes a partir de la posición a la que se llegó en el último "d". Si se le da un rango, mostrará ese rango.





  • E DIRECCION: EDIT dirección [lista]

Parámetros: [lista de palabras a escribir]
Permite editar, byte por byte, una zona de memoria. Muestra -en hexadecimal- el byte de esa posición y permite escribir otro valor para cambiarlo. Pulsando espacio pasa al byte siguiente, dejando como estaba el anterior si no se ha cambiado, o guardando los cambios si sí se ha hecho. Para terminar la edición se pulsa INTRO.






  • F: FILL [lista de intervalos]
    Parámetros: ; Palabra con la que queremos rellenar

Llena una zona de memoria con un valor determinado. Como al terminar un programa la zona de memoria en que se residía no se borra (poniéndola a cero, por ejemplo), a menudo es útil para distinguir entre lo que son datos del programa actual y lo que es basura del anterior.





  • GO (G)
    Este comando ejecuta el código en memoria. Si se está depurando un programa, permite ejecutar el código cargado en memoria. También permite establecer puntos de quiebre (breakpoints) que son direcciones en las que se detiene la ejecución del programa.
    La sintaxis es: G = ...


  • Aritmética Hexadecimal (H)
    Este comando ejecuta restas y suma hexadecimales.
    La sintaxis es:
    H
    Como resultado de lo anterior, DEBUG regresa dos valores: la suma y la resta de los argumentos en hexa.
    Resultado:
    ; Es la suma ( + )
    ; es la resta ( - )





  • INPUT
    Este comando "jala" un byte de un puerto.
    La sintaxis es:
    I
    es la dirección del puerto a leer. Se lee el dato y se despliega en pantalla.



  • LOAD (L)
    Este comando se usa para cargar un archivo o sectores de disco a memoria.
    La sintaxis es:
    L


  • MOVE (M)
    Este comando mueve un bloque de memoria de una localidad a otra.
    La sintaxis es:
    M
    bloque de memoria
    es la dirección destino. El bloque de origen y la dirección destino pueden traslaparse.

  • NAME (N)
    Este comando se usa para especificar el nombre del archivo usado por los comandos LOAD y WRITE.
    La sintaxis es: N





  • OUTPUT (O)
    Este comando pone un byte en el puerto especificado.
    La sintaxis es:
    O
    es el byte hexadecimal a escribir en .
  • P: STEP P [=dirección] [número]
    Trace (T) puede ser incómodo si no se quiere depurar el código de las rutinas de interrupción o si ya se sabe el código que hay en las subrutinas y tan sólo interesa seguir avanzando sin entrar en ellas. En estos casos se usa p.



  • R: REGISTERS [registro]
    Sin parámetros, muestra el contenido de los registros de la CPU, así como la próxima instrucción a ejecutar."R [REGISTRO]" muestra el contenido del registro especificado y cambia el prompt de "-" a ":" invitando a que se cambie su valor , además muestra la instrucción apuntada por CS:IP. Pulsando Enter sin más lo deja como estaba.





  • SEARCH (S)
    Este comando permite buscar en un bloque de memoria una secuencia específica de valores.
    La sintaxis es:
    S

  • T: TRACE [=dirección] [valor]
    Ejecuta la instrucción apuntada por cs:ip y vuelve a debug. Permite ejecutar paso a paso un programa y observar en cada instrucción el efecto producido. Si haciendo "trace" se llega a una subrutina (CALL) o a una interrupción (INT) la siguiente instrucción que se ejecutará será la primera de la subrutina o la primera de la rutina de atención de la interrupción correspondiente.


  • El Comando 'U' ( UnAsemble o Desensamblado )

    Parámetros: -dir_comienzo- -dir_final-


    se desensamblan las direcciones de memoria a partir de
    CS: hasta CS: ( es opcional )



  • WRITE (W)
    Este comando se usa para escribir un archivo a sectores individuales de disco a disco.
    La sintaxis es:
    W


  1. La mayoría de los comandos de debug ejecutan una acción y vuelven al indicador del shell, pero si es un comando largo, como puede ser mostrar un trozo grande de código, puede detenerse pulsando CTRL-Pausa o interrumpirse con CTRL-C para volver al shell.


  2. Errores
    Cuando debug no sabe interpretar un comando, muestra un mensaje de error y un indicador "^" debajo del sitio del comando donde está el error.

Q: QUIT
Salir de debug y volver al DOS.





Comentarios

Publicar un comentario

Entradas populares de este blog

TUNING DEFENSA TRASERA ICHIVAN TAMBIEN CONOCIDA COMO VANETTE

EMPESANDO A TUNEAR LA FURGONETA Y PROCESOS QUE SE LLEVARON PARA ELLO INCLUYENDO FIBRA DE VIDRIO Y FIBRA DE CARBONO ASI COMO PARTES ELECTRONICAS Y OTROS ARTILUGIOS. Abrir / Cerrar PRIMERO QUE NADA ESTA ES LA NAVE ANTES DE: AHORA SI EMPESANDO CON EL PROCESO...... NOTA: LA DEFENSA ORIGINAL CUMPLIO SU FUNCION VARIOS GOLPES SON AMORTIGUADOS POR LA DEFENSA TAN SENCILLA QUE TENIA Y PUES A REMPLASARLA CON UNA MAS GRANDE Y AL ESTILO TUNING A RAS DE SUELO. PRIMERO QUE NADA HAY QUE TENER UNA IDEA DE LO QUE QUEREMOS HACER PARA ELLO HACEMOS UN BOCETO A MANO Y PUES MAS QUE NADA PARA TENER CLARO TODO, INCLUSO PODRIAS HACERLO A COMPUTADORA (AUTOCAD) PARA TENER MAYOR EXACTITUD PERO NO FUE EL CASO (MUCHO TIEMPO). ESTE BOCETO LO DISEÑO MI CARNAL EL etor PERO ERA MAS BIEN PARA COMBI JAJA Y PUES NO CALIFICO AUNQUE IGUAL A ALGUIEN LE LATE. ESTE OTRO DISEÑO DE LA DERECHA FUE EN EL QUE ME BASE PARA EMPESAR A HACER LA DEFENSA Y AUNQUE SUFRIO ALGUNAS MODIFICACIONES QUE NO TOME

HACK LEGO NXT

cracion-de-interfaces-de-hardware-para-robot-lego.pdf

Probar Motor Brushless con Arduino UNO

Probar Motor Brushless con Arduino UNO Materiales: Arduino UNO Controlador ESC Motor Brushless Hay diferentes tipos de Controladores, diferenciado por marcas con lo que pudiera confundirnos los colores de cables del fabricante pero el funcionamiento es el mismo. Estos son algunos ejemplos de los diferentes colores de conectores;  siempre el positivo va al centro, el mas obscuro es el negativo y señal (blanco, amarillo, anaranjado).  Diagrama Electrónico: El Código Arduino: #include Servo clase; int ini = 0;   void setup() {   clase.attach(9);  } void loop() {   for (ini = 0; ini <= 180; ini += 1)   {     clase.write(ini);                 delay(95);                      } } Código 1 2 3 4 5 6 7 #include  Servo clase; int ini = 0;   void setup() {   clase.attach(9);  } void loop() {   for (ini = 0; ini <= 180; ini += 1)   {     clase.write(ini);                 delay(95);