Debug the Executable

Red Hat Enterprise Linux 3: Developer Tools Guide
Prev | Chapter 3. Developing with Red Hat Enterprise Linux Developer Tools | Next

# 3.4. Debug the Executable

To start GDB, use the following commands:

    gdb hello

After the initial copyright and configuration information, GDB returns its own prompt, `(gdb)`. The following is a sample debugging session:

1. To set a breakpoint, type:

       break main

   The following output displays:

       Breakpoint 1 at 0x132: file hello.c, line 15.

   Note the exact address and line number may vary, depending upon the target architecture being debugged and the exact layout of the C code in the `hello.c` file.

2. To run the program, type:

       run

   The following output displays (when the program stops at a breakpoint):

           Starting program: hello
           Breakpoint 1, main () at hello.c:15
           15 a = 3;

   Again note that the exact line number and instruction displayed is dependent upon the source code layout.

3. To print the value of variable, `a`, type:

       print a

   The following output displays:

       $1 = 0

4. To execute the next command, type `next`:

       next

   The following output displays:

           16 b = 4;

5. To display the value of a again, type:

       print a

   The following output displays:

           $2 = 3

6. To display the program being debugged, type:

       list

   The following output displays:

       12         int
       13         main (void)
       14         {
       15           int b;
       16
       17           a = 3;
       18           b = 4;
       19
       20           printf ("Hello, world!\n");
       21
       22           foo (b);
       23
       24           return 0;
       25         }

7. To list a specific function code, use the `list` command with the name of the function to be display. For example, type:

       list foo

   The following output displays:

        1          #include <stdio.h>
        2
        3          int a, c;
        4
        5          static void
        6          foo (int b)
        7          {
        8            c = a + b;
        9            printf ("%d + %d = %d\n", a, b, c);
       10          }

8. To set a breakpoint at line seven, enter the following input (set a breakpoint at any line by entering `break `linenumber``, where ``linenumber`` is the specific line number to break):

       break 8

   The following output displays:

       Breakpoint 2 at 0xf4: file hello.c, line 8.

9. To resume normal execution of the program until the next breakpoint, type:

       continue

   The following output displays:

       Continuing.
       Hello, world!
       Breakpoint 2, foo (b=4) at hello.c:8
       8 c = a + b;

10. To step to the next instruction and execute it, type:

        step

    The following output displays:

        9 printf ("%d + %d = %d\n", a, b, c);

11. To display the value of c, type:

        print c

    The following output displays:

        $3 = 7

12. To see how you got to where you are, type:

        backtrace

    The following output displays:

        #0 foo (b=4) at hello.c:9
        #1 0x15c in main () at hello.c:18

13. To exit the program and quit the debugger, type:

        quit

Prev | Home | Next
Run the Executable | Up | Assembler Listings