Skip to content
Jens Maus edited this page Feb 13, 2017 · 1 revision

Conceptos básicos sobre servicio de depuración de YAM

Este artículo explica como puede obtener información más detallada de YAM en caso de tener algún problema que podría estar siendo un fallo en realidad de YAM o cualquier otro componente utilizado por YAM. Para el desarrollo de YAM, y también para la identificación de la base del problema, ciertos puntos llamados de depuración se incluyen en el código fuente de YAM. Parte de estos puntos normalmente están sólo disponibles en las llamadas versiones de depuración de YAM. Pero algunos puntos están presentes incluso en la versiones finales.

Así que en caso de que haya sido instado por un desarrollador de YAM para ejecutar una versión de depuración o quiere ver si puede haber algún asunto que le gustaría investigar un poco en profundidad, las siguientes instrucciones pueden ayudarle. Por favor tenga en cuenta, sin embargo, que la mayoría de las cosas explicadas aquí son difícilmente de cualquier ayuda para usuarios novatos. Así que por favor proceda con la depuración sólo en caso de que haya sido instado por un desarrollador de YAM a hacerlo.

NOTA IMPORTANTE:

Salida de depuración significa ayudarnos a nosotros para encontrar fallos en YAM y puede contener información privada, como contraseñas, nombres de usuario, etc. Por favor asegúrese de quitar este tipo de información de la obtenida antes de hacerla pública en cualquier forma (p.ej. en el seguimiento de fallos). Nosotros no tenemos absolutamente ninguna responsabilidad por posible hackeado de cuentas de correo debido a publicaciones de información privada accidentalmente. Así que por favor tenga cuidado con esto cuando facilite información de depuración.

Diferentes servicios de depuración en YAM:

YAM provee dos diferentes servicios para la depuración:

  1. depuración y salida de todo el texto basado en la comunicación entre YAM y el servidor de correo con el que se está comunicando (POP3, SMTP, etc.).
  2. un registro completo que contiene gran cantidad de información interna

El primero está disponible en cada ejecutable de YAM (incluso en las versiones definitivas) y se activa añadiendo el tooltype DEBUG en el icono de YAM o ejecutando YAM desde el Shell vía "YAM DEBUG". El último método debería ser el preferido, porque la salida entonces puede ser redireccionada a un archivo ("YAM DEBUG >debug.log"), el cual puede editar posteriormente.

El segundo servicio no está contenido en las versiones definitivas de YAM, pero si en un ejecutable especial de depuración. Este ejecutable está también disponible en la página de descarga de YAM. Por favor asegúrese de obtener el archivo de depuración correcto para su plataforma e instale el ejecutable "YAM.debug" junto al ejecutable normal de "YAM".

Para utilizar esta versión especial de depuración, también necesita un modo de obtener la salida serie a donde esta versión de depuración envía la información de depurado. Esto puede hacerse o bien conectando con un cable serie null-modem a otro ordenador (conectado a su Amiga vía cable serie nullmodem) o vía la aplicación Sashimi disponible en AmiNet (para OS3/68k, para Morphos/PPC o para AmigaOS4/PPC). Sashimi es una aplicación que puede captar todas las salidas enviadas al puerto serie de su ordenador, y por tanto, permite coger toda la información de depuración enviada por YAM. En caso de que no utilice Sashimi para capturar la salida de depuración, se enviará la información a través del puerto serie al ordenador conectado y deberá identificarse con un programa terminal apropiado (p.ej. HyperTerminal o TeraTerm Pro bajo Windows o miniterm bajo Unix).

Utilizando Sashimi:

Si está utilizando Sashimi para registrar localmente la información de depuración, por favor ejecute Sashimi antes de iniciar YAM de esta forma:

run <>nil: sashimi on noprompt >debug.log

Sashimi ofrece algunas opciones más que influyen en su comportamiento. Por favor vea la documentación de Sashimi para más información.

Otras herramientas de depuración de terceras partes necesarias:

Dependiendo de en que plataforma esté ejecutando YAM debera tener las siguientes herramientas instaladas y funcionando antes de iniciar una sesión de depurado de YAM:

AmigaOS3 o MorphOS:

  • Enforcer o CyberGuard - para captar accesos de memoria ilegales.
  • SegTracker - para activar Enforcer/CyberGuard que muestre la información del hunk y código fuente del fallo de memoria.

AmigaOS4:

  • MemGuard - para activar en OS4 el seguimiento de fallos de memoria y otros

Todas estas herramientas están disponibles mayormente en AmiNet o en otros lugares de acceso público. Por favor lea su documentación detenidamente. Usualmente no necesita opciones especiales para obtener salidas de información útiles en caso de fallo. El único punto importante es iniciar todas estas herramientas antes de iniciar YAM.

Como se define la información de depuración a obtener:

Una vez que está dispuesto para obtener la información al puerto serie que envía la versión de depuración de YAM, necesita decirle a YAM qué tipo de información quiere tener. Esto se hace utilizando una variable de entorno (ENV variable) llamada "yamdebug". Sólo necesita definir la variable como una cadena de texto que contenga ciertos comandos que YAM interpretará tan pronto como se inicie (vea más abajo).

El servicio de depurado interno de YAM se divide en dos partes: clases de depuración e indicadores de depuración. Los indicadores de depuración normalmente se utilizan para definir una cierta salida de depuración a una función o área de la aplicación (p.ej. información acerca de arexx, el inicio, relativo a la pila tcp/ip, etc.). Las clases de depuración, sin embargo, se utilizan para definir de que naturaleza es la información de salida de depuración (p.ej. una advertencia, un error o tal). Así que la mayoría de las veces probablemente querrá definir indicadores de depuración y sólo definir una clase de depuración completa para mostrar u ocultar en caso de recibir demasiada o escasa información.

Todos los indicadores de depuración actualmente disponibles son:

  • always - imprime siempre, sin relación específica a nada
  • startup - relacionado con inicio/salida del programa
  • timerio - relacionado con timer.device
  • config - todo sobre manejo de la configuración
  • filter - filtrado de correo (incluído filtrado spam)
  • folder - gestión de carpetas
  • mail - relacionado con mensajes
  • mime - relacionado con MIME
  • gui - manejo de GUI
  • rexx - relacionado con ARexx
  • net - relacionado con la red y la pial TCP/IP
  • util - relacionado con otras utilidades
  • import - importado y exportado de correo
  • xpk - el sistema de compresión XPK
  • image - manejo de imágenes y almacenado caché
  • update - función automática de actualización de YAM
  • html - manejo de documento HTML
  • spam - información sobre el funcioamiento del filtro spam
  • uidl - manejo UIDL ("evitar mensajes duplicados")
  • hash - relacionado con la tabla hash
  • print - impresión de correos
  • theme - relacionado con temas
  • thread - manejo de conversaciones
  • all - todo lo anterior (de arriba)

Por defecto sólo los indicadores relacionados con inicio están activados. Esto significa, que en caso de iniciar la versión de depurado de YAM sin tener la variable de entorno definida "yamdebug" en ENV: sólo imprimirá poca información sobre el inicio y apagado de YAM. Se pueden combinar varios indicadores y debe estar separado o por un espacio, una coma o un punto y coma. Los indicadores también se pueden excluir (negar) anteponiéndole un '!'.

Están disponibles las siguientes clases de depuración:

  • @ctrace - genera un seguimiento de todas las funciones de entrada y salida
  • @report -imprime la información tipo informe
  • @assert - imprime afirmaciones
  • @timeval - imprime medidas de tiempo
  • @debug - imprime mensajes normales de depuración
  • @error - imprime mensajes de error
  • @warning - imprime mensajes de advertencia
  • @mtrack - imprime adertencias de seguimiento de la memoria
  • @tags - imprime listas de etiquetas
  • @all - todo lo anterior (de arriba)

Por defecto las clases @report, @assert, @debug, @error, @warning y @mtrack están activadas.

Las clases de depuración deben tener antepuesto un caracter de '@' (arroba) como se puede ver en la lista anterior. Se pueden combinar varias clases y se deben separar o por un espacio, una coma o un punto y coma. Las clases también se pueden excluir (negar) anteponiendo un '!'.

Hay dos clases especiales que influyen en el formato de la información de salida generada.

Añadiendo "stdout" todos los mensajes saldrán por la ventana Shell desde donde YAM fue iniciado (o a la ventana abierta automáticamente cuando YAM se inicie desde el Workbench). Estos mensajes se pueden redireccionar a un archivo.

Añadiendo "file:ruta_archivo" generará un archivo llamado "ruta_archivo" y escribirá en él directamente todos los mensajes de depuración.

Ejemplos:

setenv yamdebug "net image !startup"

Esto activará la depuración de lo relacionado con la red y manejo de imágenes, pero todo lo relacionado con inicio/apagado se excluirá. Todos los mensajes de depuración se transmitirán vía puerto serie a un terminal conectado. Opcionalmente esto se puede capturar con una herramienta como Sashimi.

setenv yamdebug all,@!all,@error,stdout

Esto activa todos los indicadores de depuración, pero sólo para mensajes de error. Todos los mensajes de depuración se imprimirán en la ventana Shell desde donde YAM fue iniciado.

setenv yamdebug @ctrace,@error,@!assert,stdout

Esto activa el seguimiento de información y mensajes de error, pero no afirmaciones

setenv yamdebug @all,file:ram:t/debuglog.txt

Esto activa todas las clases de depuración. Cuidado: el archivo de registro de depuración puede hacerse muy extenso!!! Todos los mensajes de depuración se escribirán directamente en el archivo "ram:t/debuglog.txt" en vez de en el puerto serie.

Las clases de depuración y los indicadores incluso se pueden combinar en una línea. Esto signifca, p.ej. setenv yamdebug @all,all activará todas las clases e indicadores de depuración y produce el registro de depuración más detallado posible (realmente, muy muy extenso!!!)

Home

Getting Started

Troubleshooting

Advanced use of YAM

Cookbooks

Development

Clone this wiki locally