$ (gdb) m4

HP gdb 3.0 for PA-RISC 1.1 or 2.0 (narrow), HP-UX 11.00. Copyright 1986 - 2001 Free Software Foundation, Inc. Hewlett-Packard Wildebeest 3.0 (based on GDB ) is covered by the

GNU General Public License. Type "show copying" to see the conditions to change it and/or distribute copies. Type "show warranty" for warranty/support.

GDB reads only enough symbol data to know where to find the rest when needed; as a result, the first prompt comes up very quickly.

1.2 Setting Display width

We now tell GDB to use a narrower display width than usual, so that examples fit in this manual.

((gdb)) set width 70

We need to see how the m4 built-in changequote works. Having looked at the source, we know the relevant subroutine is m4_changequote, so we set a breakpoint there with the GDB break command.

1.3 Setting Breakpoints

Here we describe how to set a breakpoint.

((gdb)) break m4 changequote

Breakpoint 1 at 0x62f4: file builtin.c, line 879.

1.4 Running the executable under GDB

Using the run command, we start m4 under GDB control. As long as the control does not reach the m4_changequote subroutine, the program runs as usual.

((gdb)) run

Starting program: /work/Editorial/gdb/gnu/m4/m4 define(foo,0000)

foo 0000

To trigger the breakpoint, we call changequote. GDB suspends execution of m4, displaying information about the context where it stops.

changequote(<QUOTE>,<UNQUOTE>)

Breakpoint 1, m4_changequote (argc=3, argv=0x33c70) at builtin.c:879

879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))

1.5 Stepping to the next line in the source program

Now we use the command n (next) to advance execution to the next line of the current function.

20 A Sample GDB Session