recorder_scope(1)

NAME
record_scope - A real-time graphing tool for recorded data

SYNOPSIS
recorder_scope [options] channels

DESCRIPTION
The recorder_scope program graphs the data collected by selected record(3) statements in a program. It can also be used to update recorder configuration in real-time while the instrumented program is running.

The channels to display are selected using regular expressions. They must have been shared by the instrumented program using recorder_trace_set(3) typically by setting the RECORDER_TRACES environment variable, or any other method that your program uses to pass a recorder configuration string to the recorder_trace_set(3) function.

OPTIONS

The program accepts the following options:

-c config
    Send the configuration command to the instrumented program. This makes it possible for example to dynamically adjust tracing options.

-s slider
    Setup a slider on the user interface that can be used to control a specific trace value, see RECORDER_TRACE(3). The slider syntax is name=initial:min:max where name is the name of the recorder to configure, initial is its initial value, min is the lowest possible value on the slider and max is the highest possible value on the slider.

-d duration
    Set the maximum duration in seconds for the data being displayed on the window. Data older than this duration will not be shown.

-w samples
    Set the sample window, i.e. the maximum number of samples displayed simultaneously. A value of 0 will automatically select the window width in pixels.

-t  Toggle timing display in the graphs. The same effect can be achieved while the program is running using the 't' key.

-m  Toggle display of minimum and maximum values in the graphs. The same effect can be achieved while the program is running using the 'm' key.

-a  Toggle display of running average values in the graphs. The same effect can be achieved while the program is running using the 'a' key.

-n  Toggle display of the normal values in the graphs (for example if you are only interested in min and max values). The same effect can be achieved while the program is running using the 'n' key.

-r ratio
    Set averaging ratio for -m and -a options, in percent.

-b basename
    Set the basename for file when saving data or screen shots.

-g WxH@XxY
    Set the window geometry to W x H pixels at position (X, Y)

EXAMPLES

If the instrumented program contains the following recorder instrumentation:

        int rate = RECORDER_TWEAK(rate);
        record(my_recorder, "The value of %d is %d", x, y * rate);

then the values of x and y can be exported by running the program instrumented. For example, setting the environment variable RECORDER_TRACES to the value my_recorder=x_value,y_value will export the first two data values in recorder my_recorder under the names x_value and y_value for use by recorder_scope.

To graph these values, you would use:

        % recorder_scope x_value y_value

To enable tracing for all recorders whose names end in "error":

        % recorder_scope -c '.*error'

To set the 'rate' tweak to 10, giving the value of RECORDER_TRACE(rate) or RECORDER_TWEAK(rate) the value 10:

        % recorder_scope -c 'rate=10'

To adjust the value of 'rate' using a slider starting at value 10 and where the values can be set between 10 and 39:

        % recorder_scope -s 'rate=10:2:39'

ENVIRONMENT VARIABLES

The path to the shared memory file can be specified using the RECORDER_SHARE environment variable. That variable should be set consistently between the instrumented program and the recorder_scope application.

BUGS

The recorder_scope program normally attempts to use OpenGL for faster rendering. This may not be convenient for example over a remote X11 connexion. In that case, you should set the environment variable RECORDER_NOGL=1 and will have significantly lower performance.

Bugs should be reported using https://github.com/c3d/recorder/issues.

SEE ALSO
record(3),recorder_trace_set(3)

Additional documentation and tutorials can be found at https://github.com/c3d/recorder.

AUTHOR
Written by Christophe de Dinechin