Core Client: Debugging

Core client logging and error output

The core client writes error messages to stderr. This mechanism is reserved for serious problems, i.e. those that reflect bugs in the core client program or conditions that require user intervention. Specifically, The client verifies that arguments to functions have valid values, and will print a message to stderr on an invalid argument. These error messages are formatted as error: CLASS_NAME.function: error_statement argument. Common errors of this type include unexpected NULL pointer arguments and negative lengths. Error numbers are defined in lib/error_numbers.h.

In addition, the core client can write a variety of "logging" information to stdout. The logging options are read from a file log_flags.xml. This file has the following format:

<log_flags>
    [ flags ]
</log_flags>
The flags are as follows:
<task/>
Log the start, restart and completion of computational tasks.
<file_xfer/>
Log the start, restart and completion of file transfers.
<sched_ops/>
Log connections with scheduling servers.
<state_debug/>
Log changes to the "client state" data structures.
<task_debug/>
Log debugging information about task execution.
<file_xfer_debug/>
Log debugging information about file transfers.
<sched_op_debug/>
Log the request and reply messages of exchanges with scheduling servers.
<http_debug/>
Log debugging information about HTTP operations.
<time_debug/>
Log the passage of time.
<net_xfer_debug/>
Log debugging information about network communication.

Application error output

The stderr of applications is automatically directed to a file. The contents of this file are returned to the scheduling server and stored in the database.