# FISH Debugging

This section describes FISH debugging capabilities that use the command-line interface. Any interface to FLAC3D that supports direct command-line interaction should support this capability. A user-interface may, however, provide an alternate means by which to debug FISH code.

In order to make the most of this functionality, some understanding of how FISH is implemented is helpful. While interpreting a FISH function, each line of source is converted (pseudo-compiled) into a list of pseudo-code objects, and these objects are executed when the function is called. Each pseudo-code object is also aware of the source file from which it originated, and the line number of that file. The pseudo-code objects and their breakpoint status are available through the fish list code command.

To enter debugging mode, use the command fish debug command, supplying the name of a FISH function. If the function requires arguments, these must be specified on the command line following the function name. The arguments will be evaluated, and the function will begin to execute in debug mode.

In debug mode, the code stops upon entry to the function. Each time the current execution point changes, information is output to the screen. This information includes the name of the function, the file name and line number of the source, and the source file line (if available) from which the current code originated. The command prompt changes to Debug>, and FLAC3D waits for a response from the user about how to proceed. Note that input will be accepted from the current input source, so it is possible to include debug commands in a data file.

See the fish debug command for further details of the debugging commands.