curs_trace

Section: Miscellaneous Library Functions (3X)
Updated:
Page Index
 

NAME

curses_trace, trace, _tracef, _traceattr, _traceattr2, _tracecchar_t, _tracecchar_t2, _tracechar, _tracechtype, _tracechtype2, _nc_tracebits, _tracedump, _tracemouse - curses debugging routines  

SYNOPSIS

#include <curses.h>

unsigned curses_trace(const unsigned param);

void _tracef(const char *format, ...);

char *_traceattr(attr_t attr);
char *_traceattr2(int buffer, chtype ch);
char *_tracecchar_t(const cchar_t *string);
char *_tracecchar_t2(int buffer, const cchar_t *string);
char *_tracechar(int ch);
char *_tracechtype(chtype ch);
char *_tracechtype2(int buffer, chtype ch);

void _tracedump(const char *label, WINDOW *win);
char *_nc_tracebits(void);
char *_tracemouse(const MEVENT *event);

/* deprecated */
void trace(const unsigned int param);  

DESCRIPTION

The curses trace routines are used for debugging the ncurses libraries, as well as applications which use the ncurses libraries. Some limitations apply:
 .IP • 4 Aside from curses_trace, the other functions are normally available only with the debugging library e.g., libncurses_g.a.
All of the trace functions may be compiled into any model (shared, static, profile) by defining the symbol TRACE.
 .IP • 4 Additionally, the functions which use cchar_t are only available with the wide-character configuration of the libraries.
 

Functions

The principal parts of this interface are
 .IP • 4 curses_trace, which selectively enables different tracing features, and
 .IP • 4 _tracef, which writes formatted data to the trace file.
The other functions either return a pointer to a string-area (allocated by the corresponding function), or return no value (such as _tracedump, which implements the screen dump for TRACE_UPDATE). The caller should not free these strings, since the allocation is reused on successive calls. To work around the problem of a single string-area per function, some use a buffer-number parameter, telling the library to allocate additional string-areas.

The curses_trace function is always available, whether or not the other trace functions are available:
 .IP • 4 If tracing is available, calling curses_trace with a nonzero parameter updates the trace mask, and returns the previous trace mask.

When the trace mask is nonzero, ncurses creates the file ``trace'' in the current directory for output. If the file already exists, no tracing is done.
 .IP • 4 If tracing is not available, curses_trace returns zero (0).
 

Trace Parameter

The trace parameter is formed by OR'ing values from the list of TRACE_xxx definitions in <curses.h>. These include:
TRACE_DISABLE
turn off tracing by passing a zero parameter.
The library flushes the output file, but retains an open file-descriptor to the trace file so that it can resume tracing later if a nonzero parameter is passed to the curses_trace function.
TRACE_TIMES
trace user and system times of updates.
TRACE_TPUTS
trace tputs(3X) calls.
TRACE_UPDATE
trace update actions, old & new screens.
TRACE_MOVE
trace cursor movement and scrolling.
TRACE_CHARPUT
trace all character outputs.
TRACE_ORDINARY
trace all update actions. The old and new screen contents are written to the trace file for each refresh.
TRACE_CALLS
trace all curses calls. The parameters for each call are traced, as well as return values.
TRACE_VIRTPUT
trace virtual character puts, i.e., calls to addch.
TRACE_IEVENT
trace low-level input processing, including timeouts.
TRACE_BITS
trace state of TTY control bits.
TRACE_ICALLS
trace internal/nested calls.
TRACE_CCALLS
trace per-character calls.
TRACE_DATABASE
trace read/write of terminfo/termcap data.
TRACE_ATTRS
trace changes to video attributes and colors.
TRACE_MAXIMUM
maximum trace level, enables all of the separate trace features.

Some tracing features are enabled whenever the curses_trace parameter is nonzero. Some features overlap. The specific names are used as a guideline.  

Initialization

These functions check the NCURSES_TRACE environment variable, to set the tracing feature as if curses_trace was called:

filter, initscr, new_prescr, newterm, nofilter, restartterm, ripoffline, setupterm, slk_init, tgetent, use_env, use_extended_names, use_tioctl

 

Command-line Utilities

The command-line utilities such as tic(1) provide a verbose option which extends the set of messages written using the curses_trace function. Both of these (-v and curses_trace) use the same variable (_nc_tracing), which determines the messages which are written.

Because the command-line utilities may call initialization functions such as setupterm, tgetent or use_extended_names, some of their debugging output may be directed to the trace file if the NCURSES_TRACE environment variable is set:
 .IP • 4 messages produced in the utility are written to the standard error.
 .IP • 4 messages produced by the underlying library are written to trace.

If ncurses is built without tracing, none of the latter are produced, and fewer diagnostics are provided by the command-line utilities.  

RETURN VALUE

Routines which return a value are designed to be used as parameters to the _tracef routine.  

PORTABILITY

These functions are not part of the XSI interface. Some other curses implementations are known to have similar features, but they are not compatible with ncurses:
 .IP • 4 SVr4 provided traceon and traceoff, to control whether debugging information was written to the ``trace'' file. While the functions were always available, this feature was only enabled if DEBUG was defined when building the library.
The SVr4 tracing feature is undocumented.
 .IP • 4 PDCurses provides traceon and traceoff, which (like SVr4) are always available, and enable tracing to the ``trace'' file only when a debug-library is built.
PDCurses has a short description of these functions, with a note that they are not present in X/Open Curses, ncurses or NetBSD. It does not mention SVr4, but the functions' inclusion in a header file section labeled ``Quasi-standard'' hints at the origin.
 .IP • 4 NetBSD does not provide functions for enabling/disabling traces. It uses environment variables CURSES_TRACE_MASK and CURSES_TRACE_FILE to determine what is traced, and where the results are written. This is available only when a debug-library is built.
The NetBSD tracing feature is undocumented.

A few ncurses functions are not provided when symbol versioning is used:

_nc_tracebits, _tracedump, _tracemouse

The original trace routine was deprecated because it often conflicted with application names.  

SEE ALSO

curses(3X).


 

Index

NAME
SYNOPSIS
DESCRIPTION
Functions
Trace Parameter
Initialization
Command-line Utilities
RETURN VALUE
PORTABILITY
SEE ALSO