sábado, 27 de noviembre de 2021

WinUAE Debugger

No vamos a descubrir ahora que WinUAE es una excelente herramienta para desarrollar para Amiga.

En cada versión la emulación es mas precisa y fiel, por lo que podemos fiarnos de su comportamiento cada vez mas. Eso si...no guardéis vuestros Amigas pues siempre hay que verificar en uno real.


Pero a parte de esto, WinUAE trae un depurador que a veces nos puede sacar de un atolladero mientras estamos programando. Al principio puede resultar confuso pero enseguida le vamos a sacar provecho.


Para entrar el depurador pulamos shift+f12

El depurador tiene dos formas de visualización. Una por vía de comandos y otra con GUI.


La versión GUI tiene varias pestañas que pueden ser accedidas con las teclas de función.

Una vez dentro vemos el estado de la memoria, los registro etc etc... y podemos ejecutar ciertos comandos que nos sacaran las tripas del Amiga.

Vamos a ver unos pocos de ellos e intentaremos explicar que hacen.

Atención a las mayúsculas y minúsculas pues tiene importancia.


Comando y acción:

g[dirección]

Empieza la ejecución en la dirección actual o en [dirección]


c

Muestra el estado de las CIAs, unidades de disco y registros custom.




r

Muestra el estado de la CPU. El valor de los registros etc...



r  <registro> <valor>

Modifica el <registro> de la CPU con el <valor>

Ejemplo: r d0 $ff0f

Pone el valor $ff0f en d0



m <dirección> [líneas]

Muestra lo que hay en la <dirección> de memoria. Opcionalmente puedes seleccionar cuantas [líneas] quieres ver.

Ejemplo: 



t  [instrucciones]

Avanza una instrucción u opcionalmente un numero de [instrucciones]


z

Avanza a través de una instrucción. Útil si nos encontramos JSR, DBRA etc 



fo <número> <registro> <operador> <valor>

Crea un breakpoint <número> que se activa cuando el <operador> se cumple entre el <registro> y el <valor>

registro=Dx,Ax,PC,USP,ISP,VBR,SR. 

operador:!=,==,<,>,>=,<=,-,!- (-=val to val2 range).

Ejemplo:

fo 0 d0 < $ffffffff

Crea el breakpoint 0 que se activara cuando d0 sea menor que $ffffffff


fl

Muestra todos los breakpoints


fd

Elimina todos los breakpoints.


e

Muestro el valor de todos los custom chips.



 o <0-2|addr> [<lineas>]

Muestra la memoria como instrucciones Copper.

Ejemplo:


Muestra 6 líneas de la copper que hay en $4da10



ot 

Hace un paso de la copperlist.


ob <direccion>

Crea un breakpoint de copper en la <dirección>



H[H]

Muestra el historial de instrucciones que han pasado por el Program Counter.

Opcionalmente poniendo HH sale el historial mas detallado.



C <valor>

Busca el <valor> en memoria.


W <addr> <valor[.x] separated by space> 

W <addr> 'string'

Escriben a la memoria del Amiga.

Ejemplo:

W $4354 $ffff

Escribe el valor  $ffff en la dirección $4354 



w <número> <dirección> <longitud>

Crea el breakpoint <numero> cuando el programa escribe en la <dirección>

Ejemplo:

w 0 $100 2

Activa el Breakpoint 0 al escribir en $100.

Si por ejemplo nuestro programa hace un clr $100, se abre el debugger en la direccion del Clr.

Ejemplo 2:

w 0

Elimina el breakpoint 0 



 M<a/b/s> <mascara>        

Activa o desactiva los canales de audio, bitplanes o sprites.

(Texto extraído del articulo de Fernando Cabrera en CommodoreSpain)

Activar / desactivar bitplanes (Mb <máscara de bitplanes>): empleando está opción “encendemos” o “apagamos” los distintos planos que componen la memoria gráfica del Amiga. La <máscara de bitplanes> no es más que un número en el que un bit a 0 significa que no queremos mostrar el bitplane correspondiente a esa posición y un bit a 1 indica justo lo contrario. Ejemplo: Mb %00000111 o Mb $07, activaría sólo los bitplanes 0, 1 y 2, puesto que son precisamente esos tres bits los que están a 1 en el argumento usado para el comando Mb.

Activar / desactivar sprites (Ms <máscara de sprites): análoga a la anterior, nos permitirá decidir en cada momento qué sprites hardware queremos mostrar y cuáles queremos ocultar. Ejemplo: Ms %10101010 o Ms $AA, activaría sólo los sprites 1, 3, 5 y 7.


v [-1 a -4] 

Activa el depurador DMA visual.

Muestra mediante colores los accesos DMA en pantalla.

-1 Activado sin modo visual

-2, -3 o -4 diferentes modos visuales

v-2:


v-3:


v-4:

    




Cada color representa una acceso DMA a la memoria chip y vienen definidos de la siguiente manera:


v <vpos> [<hpos>] 

Muestra información detallada del ciclo DMA en la posición <vpos>.[hpos] es opcional.



?

Calculadora y conversor

Ejemplo:

?65535

0x0000FFFF = %00000000000000001111111111111111 = 65535 = 65535



x

Quita el debugger


xx

Intercambia el Debugger con GUI y sin el.



h

Muestra la lista de comandos y su descripción.



Estos son solo algunos de los comandos. Toquetear y cambiar cosas siempre es la mejor manera de aprender así que...adelante!



No hay comentarios:

Publicar un comentario