AzerothCore
Pages :

C贸mo reiniciar y depurar

AzerothCore est谩 compuesto por 2 servicios: authserver y worldserver.

  • Authserver s贸lo act煤a como un autentificador y un router para sus reinos redirigiendo las conexiones de sus clientes autorizados a la direcci贸n del reino seleccionado.
  • En cambio, el servidor de mundos (worldserver) se encarga de todas las conexiones relacionadas con la mec谩nica del juego y es la 煤nica fuente de verdad para todo lo relacionado con un solo reino.

authserver y worldserver pueden ser colocados en diferentes entornos, sin embargo, en la siguiente gu铆a le explicaremos c贸mo ejecutarlos juntos en el mismo entorno.

C贸mo iniciar los servicios

Tanto authserver como worldserver pueden iniciarse simplemente ejecutando los binarios compilados despu茅s de completar la instalaci贸n.

C贸mo configurar un reinicio

El reinicio y la depuraci贸n de una aplicaci贸n funcionan de manera muy diferente dependiendo de su sistema operativo. Por eso siempre sugerimos utilizar nuestra soluci贸n docker que es totalmente compatible con todas las plataformas.

Sin embargo, si necesitas mantener tu servidor en funcionamiento despu茅s de una ca铆da y comprobar qu茅 ocurre con tu c贸digo, puedes hacerlo utilizando un reiniciador y un depurador.

A continuaci贸n vamos a explicar c贸mo utilizar nuestros scripts de reinicio integrados y la utilidad de depuraci贸n GDB tambi茅n para generar crash-dumps.

Restarter usando acore dashboard (s贸lo para bash)

Puedes utilizar ./acore.sh run-worldserver y ./acore.sh run-authserver.

Ambos funcionan de forma inmediata cuando se compila con el dashboard.

NOTA: Para habilitar GDB puede utilizar AC_RESTARTER_WITHGDB=true como variable de entorno o a帽adiendo esto a su archivo /conf/config.sh.

Despu茅s de habilitar GDB, si el servidor se bloquea, encontrar谩s el archivo crashdump (gdb.txt) dentro de la carpeta /env/. Tenga en cuenta que debe compilar su c贸digo con uno de los siguientes tipos de compilaci贸n: Debug o RelWithDebInfo, de lo contrario GDB no funcionar谩 correctamente.

Uso de docker (multiplataforma)

Nuestro sistema docker integra los scripts anteriores dentro de docker-compose. Esto significa que habilitar el GDB funciona exactamente de la misma manera en docker tambi茅n.

Adem谩s, nuestro docker-compose utiliza la funci贸n pol铆tica de reinicio para mantener los contenedores en funcionamiento.

Para m谩s informaci贸n, consulte la documentaci贸n Instalaci贸n con Docker.

Tambi茅n encontrar谩s una gu铆a sobre c贸mo depurar tu c贸digo utilizando VSCode combinado con su extensi贸n Remote Docker.

Reiniciador avanzado (s贸lo para bash)

Si desea un reinicio m谩s avanzado que incluya otras configuraciones 煤tiles, puede probar nuestro sistema run-engine escrito en bash.

Aqu铆 puedes encontrar los reinicios para entornos linux/bash.

Estos scripts se copian autom谩ticamente despu茅s de la compilaci贸n en el directorio /dist si est谩s usando nuestro dashboard ./acore.sh.

Puede copiar el archivo conf.sh.dist y crear un archivo conf-world.sh para personalizar esas configuraciones documentadas (haga lo mismo con el archivo conf-auth.sh). De esta manera, tienes tanto el restarter como el gdb preconfigurados para crear un archivo gdb.txt (crashdump) cuando el n煤cleo se bloquea. Aseg煤rese de utilizar la compilaci贸n RelWithDebInfo o Debug (en su comando CMake) para obtener informes de fallos significativos.

Luego copia el restarter-world.sh y el restarter-auth.sh de los "ejemplos" al lado de tu archivo conf y en la misma carpeta del archivo "run-engine".

Al final tendr谩s algo as铆:

example

Ejecuta esos 2 script de reinicio para tener tanto el reinicio de authserver como el de worldserver con soporte gdb.

De forma manual (multiplataforma)

Aseg煤rese siempre de utilizar la compilaci贸n RelWithDebInfo o Debug (en su comando CMake) para obtener informes de fallos significativos.

Crea un archivo llamado gdb.conf con esto dentro:

set logging on
set debug timestamp
run -c ../etc/worldserver.conf
bt
bt full
info thread
thread apply all backtrace full

Luego, para depurar o crear un crashdump s贸lo tienes que usar el comando gdb como se describe en su documentaci贸n:

gdb -x gdb.conf --batch ./worldserver

Este comando deber铆a ser suficiente tanto para conectar su IDE para depurar su c贸digo como para generar un crashdump cuando el servidor se bloquea

Para un reinicio "universal" y m谩s avanzado, personalmente estoy usando PM2

pm2 start "gdb -x gdb.conf --batch ./worldserver"

Deber铆a ser suficiente para reiniciar autom谩ticamente, monitorear y gdb su servidor