AzerothCore est谩 compuesto por 2 servicios: authserver
y worldserver
.
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.
Tanto authserver como worldserver pueden iniciarse simplemente ejecutando los binarios compilados despu茅s de completar la instalaci贸n.
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
.
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.
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.
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铆:
Ejecuta esos 2 script de reinicio para tener tanto el reinicio de authserver como el de worldserver con soporte gdb.
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