Mac Developer Library Developer


This manual page is for Mac OS X version 10.9

If you are running a different version of Mac OS X, view the documentation locally:

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Developer Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.

GROFF_TRACE(7)                                                                                GROFF_TRACE(7)

       groff_trace - groff macro package trace.tmac

       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.

       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 diag-nostic diagnostic
       nostic 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 document by the groff macro call .mso trace.tmac.  Only macros that are defined
       after this line are traced.

       If some other macro package should be traced as well it must be specified after -m trace on the  com-mand command
       mand 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 appending facilities are modified such that  they  display
       diagnostic messages.

       In  the  following  examples,  a  roff fragment is fed into groff via standard input.  As we are only
       interested in the diagnostic messages (standard error) 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.

       The trace macros are kept in the file trace.tmac located in the tmac directory; see groff_tmac(5) for

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

       Copyright (C) 2002 Free Software Foundation, Inc.

       This document is distributed under the terms of the FDL (GNU Free Documentation 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 <>.

       This document is part of groff, the GNU roff distribution.  It was written by

       Bernd Warken <>.

              An overview of the groff system.

              For details on option -m.

              A viewer program for all kinds of roff documents.

              A general description of groff macro packages.

              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.19.2                            18 July 2003                                  GROFF_TRACE(7)

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.