Saltearse al contenido

Depuración de Hooks

La API de Hooks proporciona un conjunto de funciones en el espacio de nombres trace que escriben salida en el archivo de logs de xrpld cuando este está configurado con el nivel de log trace. Estas funciones, en términos generales, te permiten ver el valor de variables, buffers y, en general, seguir la ejecución y el estado de un Hook en tiempo de ejecución.

Las siguientes funciones trace están disponibles en la API de Hooks:

Hook APIQué hace
traceImprime un mensaje en utf-8, seguido de un buffer especificado por el usuario (este último opcionalmente en hexadecimal).
trace_numImprime un mensaje en utf-8, seguido de un entero.
trace_floatImprime un mensaje en utf-8, seguido de un número de punto flotante XFL.

El siguiente código imprimirá una única línea de traza y luego aceptará la Transacción Originaria.

#include "../hookapi.h"
int64_t hook(int64_t reserved)
{
trace_num(SBUF("A number"), 10);
accept(0,0,0);
return 0;
}

Un ejemplo de la línea de log generada por xahaud cuando un pago entra o sale de la cuenta del Hook:

2021-Apr-13 13:59:11.083700726 UTC View:TRC
HookTrace[rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh-rE3SfnjwfzZFL3JK9cLVfJuy8Ar1XnCqPw]:
A number 10

Lo anterior aparece en el log en una sola línea, pero aquí se muestra dividido para mayor claridad.

A continuación se muestra un desglose del formato del log:

ParteDescripción#
2021-Apr-13 13:59:11.083700726 UTC View:TRCPrefijo de xahaud en la línea de log1
HookTraceIndica que es una traza iniciada por el propio Hook y no otro tipo de información. Otros tipos incluyen HookError, HookEmit y HookInfo.2
[rHb9CJAWyB4rj91VRWn96DkukG4bwdtyThLa primera cuenta entre corchetes es la cuenta del Hook.3
-rE3SfnjwfzZFL3JK9cLVfJuy8Ar1XnCqPw]:La segunda cuenta entre corchetes es la cuenta que originó la transacción.4
A numberEste es el mensaje que el Hook debía mostrar antes de la carga útil de la traza5
10Este es el valor de la traza6