Kaiser de Emperana
Called in hand
Bueno más que un tuto este tema es un "chicos, esto existe". Voy a mostrar como usar usar mGBA y gdb en conjunto para depurar. No voy a explicar los comandos de gdb, asumo que cualquiera que esté leyendo este tema tiene cierta noción de programación y de como usar google.
Requerimientos:
- gdb para la arquitectura arm. (viene junto con el devkitARM, así que todos lo tienen)
- mGBA
- Visual Studio Code (opcional)
Pasos:
Ahora toca elegir un camino:
Y bueno... Saludos.
Requerimientos:
- gdb para la arquitectura arm. (viene junto con el devkitARM, así que todos lo tienen)
- mGBA
- Visual Studio Code (opcional)
Pasos:
Abran el Makefile y miren si encuentan esto:
Si lo tienen bien. Sino, tendrán que resolver los conflictos que tenga su proyecto y hacer merge con el el repo de pret.
Código:
ifeq ($(DINFO),1)
override CFLAGS += -g
endif
Para poder usar el debugger, hay que compilar el juego con symbolos de debug, por lo que si lo compilaron alguna vez antes de esto, tendrán que hacer:
Luego deben compilar el juego con:
Código:
make clean
Código:
make DINFO=1
Ahora abran pokeemerald.gba/pokeruby.gba con mGBA y dirijanse a: Tools > Start GDB server. Les va a aparecer esta ventana:
En local port pongan el número que quieran, yo elegí 2345, y a bind address lo dejan en "0.0.0.0". Luego clickean start y el juego se va a pausar.
En local port pongan el número que quieran, yo elegí 2345, y a bind address lo dejan en "0.0.0.0". Luego clickean start y el juego se va a pausar.
Ahora toca elegir un camino:
Gdb es un debugger por línea de comandos. Los que tengan los binarios de devkitarm en path, podrán ejecutarlo tal que "arm-none-eabi-gdb". Los que no supongo que tendrán que agregarlo o usar "$DEVKITARM/bin/arm-none-eabi-gdb", yo haría lo primero...
Para abrir gdb con los symbolos del código fuente deberán ejecutarla tal que:
(O pokeruby.elf)
Para abrir gdb con los symbolos del código fuente deberán ejecutarla tal que:
Código:
arm-none-eabi-gdb pokeemerald.elf
Desde gdb ejecutan:
Donde 2345 es el puerto que hayan elegido en mGBA.
Código:
target remote 0.0.0.0:2345
Ahora hacen lo que tengan ganas de hacer:
Ahora simplemente abrimos Visual Studio Code y desde el mismo entramos a la carpeta de nuestro proyecto. Después entramos a la pestaña de extensiones e instalamos la extensión "Native Debug" de WebFreak.
Una vez instalada nos vamos a la pestaña de "Debug and Run" de VS Code y creamos nuestro archivo "launch.json".
(Seleccionando la opción GDB)
Y con los siguientes contenidos
Colocando el puerto correspondiente en target (donde iniciaron el server, en este ejemplo 2345).
En caso de que usen pokeruby, obviamente deberían cambiar pokeemerald.elf por pokeruby.elf.
Y en caso de que no tengan los binarios en de DevkitARM en PATH, deberían escribir la ruta completa de arm-none-eabi-gdb.
(Seleccionando la opción GDB)
Y con los siguientes contenidos
Código:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "mGBA",
"type": "gdb",
"request": "attach",
"cwd": "${workspaceRoot}",
"valuesFormatting": "parseText",
"executable": "./pokeemerald.elf",
"target": "127.0.0.1:2345",
"remote": true,
"gdbpath": "arm-none-eabi-gdb"
}
]
}
En caso de que usen pokeruby, obviamente deberían cambiar pokeemerald.elf por pokeruby.elf.
Y en caso de que no tengan los binarios en de DevkitARM en PATH, deberían escribir la ruta completa de arm-none-eabi-gdb.
Clickeamos ese hermoso botón de Play:
Y hacemos lo que tengamos ganas de hacer:
Y hacemos lo que tengamos ganas de hacer:
Si por alguna razón el debugger no reconoce los breakpoints que seleccionamos. Probar si se soluciona presionando el boton de Restart:
Y bueno... Saludos.
Última edición: