GNU Info

Info Node: (mysql.info)The DBUG package

(mysql.info)The DBUG package


Next: Locking methods Prev: Debugging client Up: Porting
Enter node , (file) or (file)node

The DBUG package.
=================

The MySQL server and most MySQL clients are compiled with the DBUG
package originally made by Fred Fish.  When one has configured MySQL
for debugging, this package makes it possible to get a trace file of
what the program is debugging. Note: Making trace files.

One uses the debug package by invoking the program with the
`--debug="..."' or the `-#...' option.

Most MySQL programs has a default debug string that will be used if you
don't specify an option to `--debug'.  The default trace file is
usually `/tmp/programname.trace' on Unix and `\programname.trace' on
Windows.

The debug control string is a sequence of colon separated fields as
follows:

     <field_1>:<field_2>:...:<field_N>

Each field consists of a mandatory flag character followed by an
optional "," and comma-separated list of modifiers:

     flag[,modifier,modifier,...,modifier]

The currently recognized flag characters are:

d       Enable output from DBUG_<N> macros for the current state. May be
        followed by a list of keywords which selects output only for the
        DBUG macros with that keyword. An empty list of keywords implies
        output for all macros.
D       Delay after each debugger output line. The argument is the
        number of tenths of seconds to delay, subject to machine
        capabilities. That is, `-#D,20' is delay two seconds.
f       Limit debugging and/or tracing, and profiling to the list of
        named functions.  Note that a null list will disable all
        functions.	The appropriate "d" or "t" flags must still be
        given, this flag only limits their actions if they are enabled.
F       Identify the source file name for each line of debug or trace
        output.
i       Identify the process with the pid or thread id for each line of
        debug or trace output.
g       Enable profiling.  Create a file called 'dbugmon.out' containing
        information that can be used to profile the program.  May be
        followed by a list of keywords that select profiling only for
        the functions in that list.  A null list implies that all
        functions are considered.
L       Identify the source file line number for each line of debug or
        trace output.
n       Print the current function nesting depth for each line of debug
        or trace output.
N       Number each line of dbug output.
o       Redirect the debugger output stream to the specified file.  The
        default output is stderr.
O       As `O' but the file is really flushed between each write. When
        needed the file is closed and reopened between each write.
p       Limit debugger actions to specified processes. A process must be
        identified with the DBUG_PROCESS macro and match one in the list
        for debugger actions to occur.
P       Print the current process name for each line of debug or trace
        output.
r       When pushing a new state, do not inherit the previous state's
        function nesting level. Useful when the output is to start at
        the left margin.
S       Do function _sanity(_file_,_line_) at each debugged function
        until _sanity() returns something that differs from 0. (Mostly
        used with safemalloc to find memory leaks)
t       Enable function call/exit trace lines. May be followed by a list
        (containing only one modifier) giving a numeric maximum trace
        level, beyond which no output will occur for either debugging or
        tracing macros.  The default is a compile time option.

Some examples of debug control strings which might appear on a shell
command line (the "-#" is typically used to introduce a control string
to an application program) are:

     -#d:t
     -#d:f,main,subr1:F:L:t,20
     -#d,input,output,files:n
     -#d:t:i:O,\\mysqld.trace

In MySQL, common tags to print (with the `d' option) are:
`enter',`exit',`error',`warning',`info' and `loop'.


automatically generated by info2www version 1.2.2.9