Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
GROFF_TRACE(7)		Miscellaneous Information Manual	  GROFF_TRACE(7)

NAME
     groff_trace - groff macro package trace.tmac

SYNOPSIS
     groff -m trace [options...] [files...]

     Elements in brackets denote optional arguments, and the ellipsis means that
     there can be any number of arguments of this kind.

DESCRIPTION
     The  trace  macro	package of groff(1) can be a valuable tool for debugging
     documents written in the roff formatting language.  A call stack  trace  is
     protocolled  on standard error, that means, a diagnostic message is emitted
     on entering and exiting of a macro call.  This greatly eases to track  down
     an error in some macro.

     This  tracing process is activated by specifying the groff or troff command
     line option -m trace.  This works also with the groffer(1) viewer	program.
     A finer control can be obtained by including the macro file within the doc-
     ument  by	the  groff macro call .mso trace.tmac.	Only macros that are de-
     fined after this line are traced.

     If some other macro package should be traced as well it must  be  specified
     after -m trace on the command line.

     The macro file trace.tmac is unusual because it does not contain any macros
     to be called by a user.  Instead, the existing macro definition and append-
     ing facilities are modified such that they display diagnostic messages.

EXAMPLES
     In  the  following examples, a roff fragment is fed into groff via standard
     input.  As we are only interested in the diagnostic messages (standard  er-
     ror)  on  the  terminal,  the  normal formatted output (standard output) is
     redirected into the nirvana device  /dev/null.   The  resulting  diagnostic
     messages are displayed directly below the corresponding example.

   Command line option
     sh# echo '.
     >	 .de test_macro
     >	 ..
     >	 .test_macro
     >	 .test_macro some dummy arguments
     >	 ' | groff -m trace >/dev/null

     *** de trace enter: test_macro
     *** trace exit: test_macro
     *** de trace enter: test_macro "some" "dummy" "arguments"
     *** trace exit: test_macro "some" "dummy" "arguments"

     The  entry  and  the  exit  of each macro call is displayed on the terminal
     (standard output) -- together with the arguments (if any).

   Nested macro calls
     sh# echo '.
     >	 .de child
     >	 ..
     >	 .de parent
     >	 .child
     >	 ..
     >	 .parent
     >	 ' | groff -m trace >/dev/null

     *** de trace enter: parent
     *** de trace enter: child
     *** trace exit: child
     *** trace exit: parent

     This shows that macro calls can be nested.  This powerful feature can  help
     to tack down quite complex call stacks.

   Activating with .mso
     sh# echo '.
     >	 .de before
     >	 ..
     >	 .mso trace.tmac
     >	 .de after
     >	 ..
     >	 .before
     >	 .after
     >	 .before
     >	 ' | groff >/dev/null

     *** de trace enter: after
     *** trace exit: after

     Here,  the  tracing is activated within the document, not by a command line
     option.  As tracing was not active when macro before was defined,	no  call
     of  this  macro is protocolled; on the other hand, the macro after is fully
     protocolled.

FILES
     The trace macros are kept in the file trace.tmac located in the tmac direc-
     tory; see groff_tmac(5) for details.

ENVIRONMENT
     $GROFF_TMAC_PATH
	    A colon-separated list of additional tmac directories  in  which  to
	    search for macro files; see groff_tmac(5) for details.

AUTHOR
     Copyright (C) 2002 Free Software Foundation, Inc.

     This  document is distributed under the terms of the FDL (GNU Free Documen-
     tation License) version 1.1 or later.  You should have received a	copy  of
     the FDL on your system, it is also available on-line at the GNU copyleft
     site <http://www.gnu.org/copyleft/fdl.html>.

     This  document is part of groff, the GNU roff distribution.  It was written
     by Bernd Warken <bwarken@mayn.de>.

SEE ALSO
     groff(1)
	    An overview of the groff system.

     troff(1)
	    For details on option -m.

     groffer(1)
	    A viewer program for all kinds of roff documents.

     groff_tmac(5)
	    A general description of groff macro packages.

     groff(7)
	    A short reference for the groff formatting language.

     A complete reference for all parts of the groff  system  is  found  in  the
     groff info(1) file.

Groff Version 1.18.1		 27 August 2026 		  GROFF_TRACE(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=groff_trace&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help