ice-gdb - JTAG ICE frontend for avr-gdb
ice-insight - JTAG ICE frontend for avr-insight
ice-gdb/ice-insight [--debugger debugger]
[--capture] [--ignore-intr] [--external]
[gdb_arguments]
ice-gdb (respectively ice-insight) starts avr-gdb
(respectively avr-insight) and avarice to do on-chip debugging
on Atmel AVR processors using their JTAG-based on-chip debug facilities, via
the Atmel JTAG ICE pod.
The executable for the program being debugged is downloaded to the
processor unless the --capture option is specified. A number of extra
commands are available within gdb when started, see their description in NEW
GDB COMMANDS below. Restrictions on debugging with the JTAG ICE pod are
discussed in more detail in DEBUGGING WITH JTAG ICE below.
The arguments passed to avarice include the value of the
AVARICE_ARGS environment variable. This is typically used to specify
the serial port to which the JTAG ICE pod is connected by setting
AVARICE_ARGS to "-j <serial port name>".
- --debugger debugger_command
- Specify a different debugger than avr-gdb (or avr-insight). This other
debugger should behave similarly to gdb.
- --capture
- Don't download the executable being debugged to the mote, just interrupt
the current program and assume that it matches the executable passed to
ice-gdb. This is similar to "attaching" to a running
program within gdb.
- --ignore-intr
- Pass the --ignore-intr option to avarice. The single-step
commands in gdb (s, n) will then "step over" interrupt handlers
(i.e., if an interrupt occurs, execution will resume for the duration of
the interrupt).
- --external
- Do not start avarice. Instead, avr-gdb will attempt to
connect to an already running avarice on port localhost:6423.
- ice-restart
- Restart avarice.
- ice-load filename
- Download executable filename to the Atmel processor and start debugging it
(this replaces the gdb load command).
- target-ice
- Connect to a copy of avarice running on port localhost:6423.
The JTAG ICE debugging environment has a few restrictions and changes:
- No "soft" breakpoints, and only three hardware breakpoints. The
break command sets hardware breakpoints. The easiest way to deal with this
restriction is to enable and disable breakpoints as needed.
- Two 1-byte hardware watchpoints (but each hardware watchpoint takes away
one hardware breakpoint). If you set a watchpoint on a variable which
takes more than one byte, execution will be abysmally slow. Instead it is
better to do the following:
watch *(char *)&myvariable
- which watches the least significant byte of myvariable.
- •
- The Atmel AVR processors have a Harvard architecture (separate code and
data buses). To distinguish data address 0 from code address 0,
avr-gdb adds 0x800000 to all data addresses. Bear this in mind when
examining printed pointers, or when passing absolute addresses to gdb
commands.
- AVARICE_ARGS
- Extra arguments to pass to avarice at startup.
On Windows, the ice-gdb and ice-insight commands only work in the
cygwin environment. They do not work with the mingw environment.