Debugging
Logging
Robot Raconteur provides powerful logging capabilities to help debug and diagnose issues.
Logging can be enabled using an environmental variable, a command line argument, or programmatically using the API.
The following log levels are supported:
TRACE
: Very detailed logs. Only available in debug builds.DEBUG
: Detailed logs for debugging with information about caught exceptions.INFO
: Informational logs.WARNING
: Warnings that may indicate a problem.ERROR
: Errors that may indicate a problem.FATAL
: Errors that will cause the program to exit.
By default, the node is in WARNING
log level.
To set the log level using an environmental variable:
Windows:
set ROBOTRACONTEUR_LOG_LEVEL=DEBUG
Linux or MacOS:
export ROBOTRACONTEUR_LOG_LEVEL=DEBUG
To set the log level using a command line argument:
python -m reynard_the_robot --robotraconteur-log-level=DEBUG
The command line arguments are configured by the ClientNodeSetup
instance that is used to initialize the node.
(In Python, the from RobotRaconteur.Client import *
statement automatically creates a ClientNodeSetup
instance.)
To set programmatically, use the one of the SetLogLevel
functions in RobotRaconteurNode
. See the
API documentation for each programming language for more information.
In MATLAB, it is necessary to use the API to enable logging and send the log output to a file:
RobotRaconteur.SetLogLevel('DEBUG');
RobotRaconteur.OpenLogFile('log.txt');
Command Line Options
Robot Raconteur supports a number of command line options to help with debugging and diagnostics. See the Command Line Arguments Wiki Page for a full list of available command line options.
Python Debugging
Python uses two additional environmental variables to enable additional debugging capabilities:
ROBOTRACONTEUR_PYTHON_TRACEBACK_PRINT_EXC
: Enables detailed tracebacks for exceptions caught by Robot Raconteur.ROBOTRACONTEUR_PYTHON_ENABLE_DEBUGPY
: Enable support for the Visual Studio Code debugger so that breakpoints will work with the Robot Raconteur thread pool threads.
The following is a normal configuration for debugging in Python:
Windows:
set ROBOTRACONTEUR_LOG_LEVEL=DEBUG
set ROBOTRACONTEUR_PYTHON_TRACEBACK_PRINT_EXC=1
set ROBOTRACONTEUR_PYTHON_ENABLE_DEBUGPY=TRUE
Linux or MacOS:
export ROBOTRACONTEUR_LOG_LEVEL=DEBUG
export ROBOTRACONTEUR_PYTHON_TRACEBACK_PRINT_EXC=1
export ROBOTRACONTEUR_PYTHON_ENABLE_DEBUGPY=TRUE
A sample Visual Studio Code launch configuration is shown below:
{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"ROBOTRACONTEUR_PYTHON_TRACEBACK_PRINT_EXC": "1",
"ROBOTRACONTEUR_PYTHON_ENABLE_DEBUGPY": "TRUE",
"ROBOTRACONTEUR_LOG_LEVEL": "WARNING"
}
},
Taps
Robot Raconteur supports the use of taps to monitor and debug communication between clients and services. Taps send all log messages and message traffic to a local socket. A log recorder program can be used to record the log messages and message traffic to a file for later analysis.
See the Taps Wiki Page for more information on taps.