The Daffodil Command Line Interface (CLI) comes with a built-in interactive debugger that pauses parsing and allows for user inspection of the parsing state. To start Daffodil in debugger mode, provide the global --debug/-d option, for example:
./daffodil --debug parse --schema schema.dfdl.xsd input.dat
Enabling the debugger displays a (debug)
prompt, at which point various commands can be entered to control parsing and inspect Daffodil state. Below is the list of commands and their descriptions.
Commands
Command | Arguments | Description | Example | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
break | <element_id> | Create a breakpoint, causing the debugger to stop when the element with the <element_id> name is created | break element.foo | ||||||||||||||||||||||||
clear | Clear the screen | clear | |||||||||||||||||||||||||
condition | <breakpoint_id> <dfdl_expression> | Set a condition on a specified breakpoint. When a break point is encountered, the debugger only pauses if the DFDL expression evaluates to true | condition 1 dfdl:occursIndex() = 3 | ||||||||||||||||||||||||
continue | Continue parsing the input data until a breakpoint is encountered. At which point, pause parsing and display a debugger console to the user | continue | |||||||||||||||||||||||||
delete | <breakpoint_id> | Delete a specified breakpoint. | delete 1 | ||||||||||||||||||||||||
disable | <type> <id> | Disable a specified breakpoint or display. To disable a breakpoint, set <type> to "breakpoint". To disable a display, set <type> to "display". | disable breakpoint 1 disable display 1 | ||||||||||||||||||||||||
display | <debugger command> | Execute a debugger command every time a debugger console is displayed to the user | display info infoset | ||||||||||||||||||||||||
enable | <type> <id> | Enable a specified breakpoint or display. To enable a breakpoint, set <type> to "breakpoint". To enable a display, set <type> to "display". | enable breakpoint 1 enable display 1 | ||||||||||||||||||||||||
eval | [type] <dfdl_expression> | Evaluate a DFDL expression. The <type> argument determines how to display the result of the dfdl_expression. <type> may be "string", "number", "boolean", or "node". If <type> is not give, then "node" is assumed. | eval number dfdl:occursIndex() | ||||||||||||||||||||||||
help | [<command>] | Display help. If a command is given, display specific help for that command and its subcommands. | help help info | ||||||||||||||||||||||||
info | <item>... | Print various pieces of internal information to the console. The valid items are:
| info data infoset | ||||||||||||||||||||||||
quit | Immediately abort all processing. | quit | |||||||||||||||||||||||||
set | <setting> <value> | Change a debugger setting. The settings are:
| set dataLength -1 set wrapLength 50 set removeHidden true | ||||||||||||||||||||||||
step | Perform a single parse action, pause parsing, and display a debugger console to the user | step | |||||||||||||||||||||||||
undisplay | <display_id> | Remove a display created using the "display" command | undisplay 1 |