Memory region attributes allow you to describe special handling required by regions of your target’s memory. GDB uses attributes to determine whether to allow certain types of memory accesses; whether to use specific width accesses; and whether to cache target memory. By default the description of memory regions is fetched from the target (if the current target supports this), but the user can override the fetched regions.
Defined memory regions can be individually enabled and disabled. When a memory region is disabled, GDB uses the default attributes when accessing memory in that region. Similarly, if no memory regions have been defined, GDB uses the default attributes when accessing all memory.
When a memory region is defined, it is given a number to identify it; to enable, disable, or remove a memory region, you specify that number.
mem lower upper attributes…
Define a memory region bounded by
attributes…, and add it to the list of regions
monitored by GDB. Note that
upper == 0 is a special
case: it is treated as the target’s maximum memory address.
(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
Discard any user changes to the memory regions and use target-supplied regions, if available, or no regions if the target does not support.
delete mem nums…
Remove memory regions
nums… from the list of regions
monitored by GDB.
disable mem nums…
Disable monitoring of memory regions
A disabled memory region is not forgotten.
It may be enabled again later.
enable mem nums…
Enable monitoring of memory regions
Print a table of all defined memory regions, with the following columns for each region:
Enabled or Disabled.
y’. Disabled memory regions are marked with ‘
The access mode attributes set whether GDB may make read or write accesses to a memory region.
While these attributes prevent GDB from performing invalid memory accesses, they do nothing to prevent the target system, I/O DMA, etc. from accessing memory.
The access size attribute tells GDB to use specific sized accesses in the memory region. Often memory mapped device registers require specific sized accesses. If no access size attribute is specified, GDB may use accesses of any size.
The data cache attributes set whether GDB will cache target memory. While this generally improves performance by reducing debug protocol overhead, it can lead to incorrect results because GDB does not know about volatile variables or memory mapped device registers.
GDB can be instructed to refuse accesses to memory that is not explicitly described. This can be useful if accessing such regions has undesired effects for a specific target, or to provide better error checking. The following commands control this behaviour.
set mem inaccessible-by-default [on|off]
on is specified, make GDB treat memory not
explicitly described by the memory ranges as non-existent and refuse accesses
to such memory. The checks are only performed if there’s at least one
memory range defined. If
off is specified, make GDB
treat the memory not explicitly described by the memory ranges as RAM.
The default value is
show mem inaccessible-by-default
Show the current handling of accesses to unknown memory.