Skip to content

Debugging Hooks

The Hook API provides a set of functions in the namespace trace which write output to the xrpld log file when xrpld is configured with the trace log-level. These functions, generally speaking, allow you to see the value of variables, buffers and otherwise trace the execution and state of a Hook at runtime.

The following trace functions are available in the Hooks API

Hook APIWhat it does
tracePrint a utf-8 message, followed by a user-specified buffer (this last optionally as hex.)
trace_numPrint a utf-8 message, followed by an integer.
trace_floatPrint a utf-8 message, followed by an XFL Floating point number.

The following code will print a single trace line then accept the Originating Transaction.

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

An example of the log-line produced by xahaud when a payment is sent out of or into the Hook Account:

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

The above appears in the log as all-one-line, but split here for visibility.

A breakdown of the log format appears in the table below

PartDescription#
2021-Apr-13 13:59:11.083700726 UTC View:TRCxahaud’s prefix to the log line1
HookTraceThis is a trace initiated by the Hook itself not some other information about the Hook. Other information is available on tags HookError, HookEmit and HookInfo.2
[rHb9CJAWyB4rj91VRWn96DkukG4bwdtyThThe first account in the square brackets is the Hook Account.3
-rE3SfnjwfzZFL3JK9cLVfJuy8Ar1XnCqPw]:The second account in the square brackets is the Originating Account.4
A numberThis is the message the Hook was told to deliver before the trace payload5
10This is the trace payload6