Debug

Name

Debug -- Functions for outputing diagnostics.

Synopsis


#include <debug.h>


#define     UNUSED                          (x)
#define     debug_msg
void        debug_dump                      (void *lp,
                                             long len );
void        debug_set_core_dir              (const char *argv0);

Description

These functions relate to outputing diagnostic messages and information.

Use of these functions requires DEBUG to be defined at compilation time. On Unix systems, the configure script has a command-line option --enable-debug. On Win32 a debug configuration exists.

Details

UNUSED()

#define UNUSED(x)	(x=x)

Available for use to prevent compiler warnings when a function argument is not used. Sometimes this is unavoidable because function has to conform to an interface.

x :

unused function argument that generates compiler warning.


debug_msg

#define debug_msg	_dprintf("[pid/%d +%d %s] ", getpid(), __LINE__, __FILE__), _dprintf

When DEBUG is defined this will write a formatted message to the platform defined error stream. The format of the message has the same semantics as standard C library call printf(). The error message displayed is prepended by the process id, the file and the line number, where debug_msg() was called. On Unix the message is rendered on the standard error stream. On Win32 a debug message is created using the Win32 API function OutputDebugString().


debug_dump ()

void        debug_dump                      (void *lp,
                                             long len );

Writes a dump of a memory region to stdout. The dump contains a hexadecimal and an ascii representation of the memory region.

lp :

pointer to memory region.

Param2 :


debug_set_core_dir ()

void        debug_set_core_dir              (const char *argv0);

Creates a directory with the application name and makes it the current working directory.

This function exists because some unix variants use the name 'core' for core dump files. When an application uses multiple processes, this can be problematic if the failure of one process leads to the failure of another because the dependent process 'core' file will overwrite the core of the failing process.

argv0 :

the application path (usually argv[0] in main()).