Simulavr: 3.1 GDB Hints

[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 3.1 GDB Hints

Since debugging an AVR program with gdb requires gdb to connect to a remote target (either simulavr or some other debugging tool, such as avarice), a series of commands must be issued every time gdb is started. The easiest way around this is to put the commands into a ‘`.gdbinit`’ file in the project directory. The following example is from a ‘`.gdbinit`’ which I use for many projects.

    ## Print out structures in a sane way

    echo (gdb) set print pretty
    set print pretty

    ## Use this for debugging the remote protocol. (Don't use unless
    ## debugging simulavr or avr-gdb)

    #echo (gdb) set debug remote 1\n
    #set debug remote 1

    ## If you don't want specify the program to debug when invoking gdb,
    ## you can tell gdb to read it in here. The file should be an elf file
    ## compiled with debugging information (-g for C files and -gstabs for
    ## asm files).

    #echo (gdb) file myprog.elf\n
    #file myprog.elf

    ## Connect to the remote target via a TCP socket on host:port.

    echo (gdb) target remote localhost:1212\n
    target remote localhost:1212

    ## If you are using simulavr as the remote target, this will upload
    ## the program into flash memory for you.

    echo (gdb) load\n
    load

    ## Set a break point at the beginning of main().

    echo (gdb) break main\n
    break main

    ## Run the program up to the first break point.  Gdb's `run` command
    ## does not work when using a remote target, must use continue.

    echo (gdb) continue\n
    continue

As you can see, I `echo` every command so I can see what gdb has done when it runs the commands in the ‘`.gdbinit`’ file.

[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ]

This document was generated on July 1, 2026 using texi2html 5.0.