[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
While nearly all GDB commands are available for all native and cross versions of the debugger, there are some exceptions. This chapter describes things that are only available in certain configurations.
There are three major categories of configurations: native configurations, where the host and target are the same, embedded operating system configurations, which are usually the same for several different processor architectures, and bare embedded processors, which are quite different from each other.
18.1 Native 18.2 Embedded Operating Systems 18.3 Embedded Processors 18.4 Architectures
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
This section describes details specific to particular native configurations.
18.1.1 HP-UX 18.1.2 BSD libkvm Interface Debugging BSD kernel memory images 18.1.3 SVR4 Process Information SVR4 process information 18.1.4 Features for Debugging DJGPP Programs Features specific to the DJGPP port 18.1.5 Features for Debugging MS Windows PE Executables Features specific to the Cygwin port 18.1.6 Commands Specific to GNU Hurd Systems Features specific to GNU Hurd 18.1.7 QNX Neutrino Features specific to QNX Neutrino
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
On HP-UX systems, if you refer to a function or variable name that begins with a dollar sign, GDB searches for a user or system name first, before it searches for a convenience variable.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
interface that provides a uniform interface for accessing kernel virtual
memory images, including live systems and crash dumps. GDB
uses this interface to allow you to debug live kernels and kernel crash
dumps on many native BSD configurations. This is implemented as a
special kvm
debugging target. For debugging a live system, load
the currently running kernel into GDB and connect to the
kvm
target:
(gdb) target kvm |
(gdb) target kvm /var/crash/bsd.0 |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
Many versions of SVR4 and compatible systems provide a facility called
`/proc' that can be used to examine the image of a running
process using file-system subroutines. If GDB is configured
for an operating system with this facility, the command info
proc
is available to report information about the process running
your program, or about any process running on your system. info
proc
works only on SVR4 systems that include the procfs
code.
This includes, as of this writing, GNU/Linux, OSF/1 (Digital
Unix), Solaris, Irix, and Unixware, but not HP-UX, for example.
info proc
info proc process-id
On some systems, process-id can be of the form `[pid]/tid' which specifies a certain thread ID within a process. If the optional pid part is missing, it means a thread from the process being debugged (the leading `/' still needs to be present, or else GDB will interpret the number as a process ID rather than a thread ID).
info proc mappings
Report the memory address space ranges accessible in the program, with information on whether the process has read, write, or execute access rights to each range. On GNU/Linux systems, each memory range includes the object file which is mapped to that range, instead of the memory access rights to that range.
info proc stat
info proc status
These subcommands are specific to GNU/Linux systems. They show the process-related information, including the user ID and group ID; how many threads are there in the process; its virtual memory usage; the signals that are pending, blocked, and ignored; its TTY; its consumption of system and user time; its stack size; its `nice' value; etc. For more information, see the `proc' man page (type man 5 proc from your shell prompt).
info proc all
info proc
subcommands.
set procfs-trace
This command enables and disables tracing of procfs
API calls.
show procfs-trace
Show the current state of procfs
API call tracing.
set procfs-file file
Tell GDB to write procfs
API trace to the named
file. GDB appends the trace info to the previous
contents of the file. The default is to display the trace on the
standard output.
show procfs-file
Show the file to which procfs
API trace is written.
proc-trace-entry
proc-trace-exit
proc-untrace-entry
proc-untrace-exit
These commands enable and disable tracing of entries into and exits
from the syscall
interface.
info pidlist
For QNX Neutrino only, this command displays the list of all the processes and all the threads within each process.
info meminfo
For QNX Neutrino only, this command displays the list of all mapinfos.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
DJGPP is a port of the GNU development tools to MS-DOS and MS-Windows. DJGPP programs are 32-bit protected-mode programs that use the DPMI (DOS Protected-Mode Interface) API to run on top of real-mode DOS systems and their emulations.
GDB supports native debugging of DJGPP programs, and defines a few commands specific to the DJGPP port. This subsection describes those commands.
info dos
info dos sysinfo
info dos gdt
info dos ldt
info dos idt
A typical DJGPP program uses 3 segments: a code segment, a data segment (used for both data and the stack), and a DOS segment (which allows access to DOS/BIOS data structures and absolute addresses in conventional memory). However, the DPMI host will usually define additional segments in order to support the DPMI environment.
These commands allow to display entries from the descriptor tables. Without an argument, all entries from the specified table are displayed. An argument, which should be an integer expression, means display a single entry whose index is given by the argument. For example, here's a convenient way to display information about the debugged program's data segment:
|
|
|
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
GDB supports native debugging of MS Windows programs, including DLLs with and without symbolic debugging information. There are various additional Cygwin-specific commands, described in this section. Working with DLLs that have no debugging symbols is described in 18.1.5.1 Support for DLLs without Debugging Symbols.
info w32
info w32 selector
GetThreadSelectorEntry
function.
It takes an optional argument that is evaluated to
a long value to give the information about this given selector.
Without argument, this command displays information
about the six segment registers.
info dll
info shared
.
dll-symbols
set cygwin-exceptions mode
on
, GDB will break on exceptions that
happen inside the Cygwin DLL. If mode is off
,
GDB will delay recognition of exceptions, and may ignore some
exceptions which seem to be caused by internal Cygwin DLL
"bookkeeping". This option is meant primarily for debugging the
Cygwin DLL itself; the default value is off
to avoid annoying
GDB users with false SIGSEGV
signals.
show cygwin-exceptions
set new-console mode
on
the debuggee will
be started in a new console on next start.
If mode is off
i, the debuggee will
be started in the same console as the debugger.
show new-console
set new-group mode
show new-group
set debugevents
OutputDebugString
API call.
set debugexec
set debugexceptions
set debugmemory
set shell
show shell
18.1.5.1 Support for DLLs without Debugging Symbols Support for DLLs without debugging symbols
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
Very often on windows, some of the DLLs that your program relies on do not include symbolic debugging information (for example, `kernel32.dll'). When GDB doesn't recognize any debugging symbols in a DLL, it relies on the minimal amount of symbolic information contained in the DLL's export table. This section describes working with such symbols, known internally to GDB as "minimal symbols".
Note that before the debugged program has started execution, no DLLs
will have been loaded. The easiest way around this problem is simply to
start the program -- either by setting a breakpoint or letting the
program run once to completion. It is also possible to force
GDB to load a particular DLL before starting the executable ---
see the shared library information in 15.1 Commands to Specify Files, or the
dll-symbols
command in 18.1.5 Features for Debugging MS Windows PE Executables. Currently,
explicitly loading symbols from a DLL with no debugging information will
cause the symbol names to be duplicated in GDB's lookup table,
which may adversely affect symbol lookup performance.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
In keeping with the naming conventions used by the Microsoft debugging
tools, DLL export symbols are made available with a prefix based on the
DLL name, for instance KERNEL32!CreateFileA
. The plain name is
also entered into the symbol table, so CreateFileA
is often
sufficient. In some cases there will be name clashes within a program
(particularly if the executable itself includes full debugging symbols)
necessitating the use of the fully qualified name when referring to the
contents of the DLL. Use single-quotes around the name to avoid the
exclamation mark ("!") being interpreted as a language operator.
Note that the internal name of the DLL may be all upper-case, even
though the file name of the DLL is lower-case, or vice-versa. Since
symbols within GDB are case-sensitive this may cause
some confusion. If in doubt, try the info functions
and
info variables
commands or even maint print msymbols
(see section 13. Examining the Symbol Table). Here's an example:
(gdb) info function CreateFileA All functions matching regular expression "CreateFileA": Non-debugging symbols: 0x77e885f4 CreateFileA 0x77e885f4 KERNEL32!CreateFileA |
(gdb) info function ! All functions matching regular expression "!": Non-debugging symbols: 0x6100114c cygwin1!__assert 0x61004034 cygwin1!_dll_crt0@0 0x61004240 cygwin1!dll_crt0(per_process *) [etc...] |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
Symbols extracted from a DLL's export table do not contain very much type information. All that GDB can do is guess whether a symbol refers to a function or variable depending on the linker section that contains the symbol. Also note that the actual contents of the memory contained in a DLL are not available unless the program is running. This means that you cannot examine the contents of a variable or disassemble a function within a DLL without a running program.
Variables are generally treated as pointers and dereferenced automatically. For this reason, it is often necessary to prefix a variable name with the address-of operator ("&") and provide explicit type information in the command. Here's an example of the type of problem:
(gdb) print 'cygwin1!__argv' $1 = 268572168 |
(gdb) x 'cygwin1!__argv' 0x10021610: "\230y\"" |
(gdb) print ((char **)'cygwin1!__argv')[0] $2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram" |
(gdb) x/2x &'cygwin1!__argv' 0x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000 (gdb) x/x 0x10021608 0x10021608: 0x0022fd98 (gdb) x/s 0x0022fd98 0x22fd98: "/cygdrive/c/mydirectory/myprogram" |
(gdb) break *&'python22!PyOS_Readline' Breakpoint 1 at 0x1e04eff0 |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
This subsection describes GDB commands specific to the GNU Hurd native debugging.
set signals
set sigs
This command toggles the state of inferior signal interception by
GDB. Mach exceptions, such as breakpoint traps, are not
affected by this command. sigs
is a shorthand alias for
signals
.
show signals
show sigs
Show the current state of intercepting inferior's signals.
set signal-thread
set sigthread
This command tells GDB which thread is the libc
signal
thread. That thread is run when a signal is delivered to a running
process. set sigthread
is the shorthand alias of set
signal-thread
.
show signal-thread
show sigthread
These two commands show which thread will run when the inferior is delivered a signal.
set stopped
This commands tells GDB that the inferior process is stopped,
as with the SIGSTOP
signal. The stopped process can be
continued by delivering a signal to it.
show stopped
This command shows whether GDB thinks the debuggee is stopped.
set exceptions
Use this command to turn off trapping of exceptions in the inferior. When exception trapping is off, neither breakpoints nor single-stepping will work. To restore the default, set exception trapping on.
show exceptions
Show the current state of trapping exceptions in the inferior.
set task pause
This command toggles task suspension when GDB has control.
Setting it to on takes effect immediately, and the task is suspended
whenever GDB gets control. Setting it to off will take
effect the next time the inferior is continued. If this option is set
to off, you can use set thread default pause on
or set
thread pause on
(see below) to pause individual threads.
show task pause
Show the current state of task suspension.
set task detach-suspend-count
This command sets the suspend count the task will be left with when GDB detaches from it.
show task detach-suspend-count
set task exception-port
set task excp
This command sets the task exception port to which GDB will
forward exceptions. The argument should be the value of the send
rights of the task. set task excp
is a shorthand alias.
set noninvasive
This command switches GDB to a mode that is the least
invasive as far as interfering with the inferior is concerned. This
is the same as using set task pause
, set exceptions
, and
set signals
to values opposite to the defaults.
info send-rights
info receive-rights
info port-rights
info port-sets
info dead-names
info ports
info psets
These commands display information about, respectively, send rights,
receive rights, port rights, port sets, and dead names of a task.
There are also shorthand aliases: info ports
for info
port-rights
and info psets
for info port-sets
.
set thread pause
This command toggles current thread suspension when GDB has
control. Setting it to on takes effect immediately, and the current
thread is suspended whenever GDB gets control. Setting it to
off will take effect the next time the inferior is continued.
Normally, this command has no effect, since when GDB has
control, the whole task is suspended. However, if you used set
task pause off
(see above), this command comes in handy to suspend
only the current thread.
show thread pause
This command shows the state of current thread suspension.
set thread run
show thread run
set thread detach-suspend-count
This command sets the suspend count GDB will leave on a
thread when detaching. This number is relative to the suspend count
found by GDB when it notices the thread; use set thread
takeover-suspend-count
to force it to an absolute value.
show thread detach-suspend-count
set thread exception-port
set thread excp
set task exception-port
(see above).
set thread excp
is the shorthand alias.
set thread takeover-suspend-count
set thread default
show thread default
Each of the above set thread
commands has a set thread
default
counterpart (e.g., set thread default pause
, set
thread default exception-port
, etc.). The thread default
variety of commands sets the default thread properties for all
threads; you can then change the properties of individual threads with
the non-default commands.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
GDB provides the following commands specific to the QNX Neutrino target:
set debug nto-debug
When set to on, enables debugging messages specific to the QNX Neutrino support.
show debug nto-debug
Show the current state of QNX Neutrino messages.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
This section describes configurations involving the debugging of embedded operating systems that are available for several different architectures.
18.2.1 Using GDB with VxWorks
GDB includes the ability to debug programs running on various real-time operating systems.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
target vxworks machinename
On VxWorks, load
links filename dynamically on the
current target system as well as adding its symbols in GDB.
GDB enables developers to spawn and debug tasks running on networked
VxWorks targets from a Unix host. Already-running tasks spawned from
the VxWorks shell can also be debugged. GDB uses code that runs on
both the Unix host and on the VxWorks target. The program
gdb
is installed and executed on the Unix host. (It may be
installed with the name vxgdb
, to distinguish it from a
GDB for debugging programs on the host itself.)
VxWorks-timeout args
All VxWorks-based targets now support the option vxworks-timeout
.
This option is set by the user, and args represents the number of
seconds GDB waits for responses to rpc's. You might use this if
your VxWorks target is a slow software simulator or is on the far side
of a thin network line.
The following information on connecting to VxWorks was current when this manual was produced; newer releases of VxWorks may use revised procedures.
To use GDB with VxWorks, you must rebuild your VxWorks kernel
to include the remote debugging interface routines in the VxWorks
library `rdb.a'. To do this, define INCLUDE_RDB
in the
VxWorks configuration file `configAll.h' and rebuild your VxWorks
kernel. The resulting kernel contains `rdb.a', and spawns the
source debugging task tRdbTask
when VxWorks is booted. For more
information on configuring and remaking VxWorks, see the manufacturer's
manual.
Once you have included `rdb.a' in your VxWorks system image and set
your Unix execution search path to find GDB, you are ready to
run GDB. From your Unix host, run gdb
(or
vxgdb
, depending on your installation).
GDB comes up showing the prompt:
(vxgdb) |
18.2.1.1 Connecting to VxWorks | ||
18.2.1.2 VxWorks Download | VxWorks download | |
18.2.1.3 Running Tasks | Running tasks |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
The GDB command target
lets you connect to a VxWorks target on the
network. To connect to a target whose host name is "tt
", type:
(vxgdb) target vxworks tt |
Attaching remote machine across net... Connected to tt. |
prog.o: No such file or directory. |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
If you have connected to the VxWorks target and you want to debug an
object that has not yet been loaded, you can use the GDB
load
command to download a file from Unix to VxWorks
incrementally. The object file given as an argument to the load
command is actually opened twice: first by the VxWorks target in order
to download the code, then by GDB in order to read the symbol
table. This can lead to problems if the current working directories on
the two systems differ. If both systems have NFS mounted the same
filesystems, you can avoid these problems by using absolute paths.
Otherwise, it is simplest to set the working directory on both systems
to the directory in which the object file resides, and then to reference
the file by its name, without any path. For instance, a program
`prog.o' may reside in `vxpath/vw/demo/rdb' in VxWorks
and in `hostpath/vw/demo/rdb' on the host. To load this
program, type this on VxWorks:
-> cd "vxpath/vw/demo/rdb" |
(vxgdb) cd hostpath/vw/demo/rdb (vxgdb) load prog.o |
Reading symbol data from wherever/vw/demo/rdb/prog.o... done. |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
You can also attach to an existing task using the attach
command as
follows:
(vxgdb) attach task |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
This section goes into details specific to particular embedded configurations.
Whenever a specific embedded processor has a simulator, GDB allows to send an arbitrary command to the simulator.
sim command
Send an arbitrary command string to the simulator. Consult the documentation for the specific simulator in use for information about acceptable commands.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
target rdi dev
target rdp dev
GDB provides the following ARM-specific commands:
set arm disassembler
This commands selects from a list of disassembly styles. The
"std"
style is the standard style.
show arm disassembler
Show the current disassembly style.
set arm apcs32
This command toggles ARM operation mode between 32-bit and 26-bit.
show arm apcs32
set arm fpu fputype
auto
softfpa
fpa
softvfp
vfp
show arm fpu
set arm abi
show arm abi
set debug arm
show debug arm
The following commands are available when an ARM target is debugged using the RDI interface:
rdilogfile [file]
Set the filename for the ADP (Angel Debugger Protocol) packet log. With an argument, sets the log file to the specified file. With no argument, show the current log file name. The default log file is `rdi.log'.
rdilogenable [arg]
Control logging of ADP packets. With an argument of 1 or "yes"
enables logging, with an argument 0 or "no"
disables it. With
no arguments displays the current setting. When logging is enabled,
ADP packets exchanged between GDB and the RDI target device
are logged to a file.
set rdiromatzero
Tell GDB whether the target has ROM at address 0. If on,
vector catching is disabled, so that zero address can be used. If off
(the default), vector catching is enabled. For this command to take
effect, it needs to be invoked prior to the target rdi
command.
show rdiromatzero
Show the current setting of ROM at zero address.
set rdiheartbeat
Enable or disable RDI heartbeat packets. It is not recommended to turn on this option, since it confuses ARM and EPI JTAG interface, as well as the Angel monitor.
show rdiheartbeat
Show the setting of RDI heartbeat packets.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
target m32r dev
target m32rsdi dev
The following GDB commands are specific to the M32R monitor:
set download-path path
Set the default path for finding downloadable SREC files.
show download-path
Show the default path for downloadable SREC files.
set board-address addr
Set the IP address for the M32R-EVA target board.
show board-address
Show the current IP address of the target board.
set server-address addr
Set the IP address for the download server, which is the GDB's host machine.
show server-address
Display the IP address of the download server.
upload [file]
Upload the specified SREC file via the monitor's Ethernet upload capability. If no file argument is given, the current executable file is uploaded.
tload [file]
Test the upload
command.
The following commands are available for M32R/SDI:
sdireset
This command resets the SDI connection.
sdistatus
This command shows the SDI connection status.
debug_chaos
Instructs the remote that M32R/Chaos debugging is to be used.
use_debug_dma
Instructs the remote to use the DEBUG_DMA method of accessing memory.
use_mon_code
Instructs the remote to use the MON_CODE method of accessing memory.
use_ib_break
Instructs the remote to set breakpoints by IB break.
use_dbt_break
Instructs the remote to set breakpoints by DBT.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
The Motorola m68k configuration includes ColdFire support, and a target command for the following ROM monitor.
target dbug dev
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
GDB can use the MIPS remote debugging protocol to talk to a MIPS board attached to a serial line. This is available when you configure GDB with `--target=mips-idt-ecoff'.
Use these GDB commands to specify the connection to your target board:
target mips port
To run a program on the board, start up gdb
with the
name of your program as the argument. To connect to the board, use the
command `target mips port', where port is the name of
the serial port connected to the board. If the program has not already
been downloaded to the board, you may use the load
command to
download it. You can then use all the usual GDB commands.
For example, this sequence connects to the target board through a serial port, and loads and runs a program called prog through the debugger:
host$ gdb prog GDB is free software and ... (gdb) target mips /devlab/ttyb (gdb) load prog (gdb) run |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
See OR1k Architecture document (www.opencores.org) for more information about platform and commands.
target jtag jtag://host:port
Connects to remote JTAG server. JTAG remote server can be either an or1ksim or JTAG server, connected via parallel port to the board.
Example: target jtag jtag://localhost:9999
or1ksim command
or1ksim
OpenRISC 1000 Architectural
Simulator, proprietary commands can be executed.
info or1k spr
info or1k spr group
info or1k spr groupno
info or1k spr group
register
info or1k spr register
info or1k spr groupno
registerno
info or1k spr registerno
spr group
register
value
spr register value
spr groupno
registerno value
spr registerno value
Some implementations of OpenRISC 1000 Architecture also have hardware trace. It is very similar to GDB trace, except it does not interfere with normal program execution and is thus much faster. Hardware breakpoints/watchpoint triggers can be set using:
$LEA/$LDATA
$SEA/$SDATA
$AEA/$ADATA
$FETCH
When triggered, it can capture low level data, like: PC
, LSEA
,
LDATA
, SDATA
, READSPR
, WRITESPR
, INSTR
.
htrace
commands:
hwatch conditional
hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)
hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)
htrace info
htrace trigger conditional
htrace qualifier conditional
htrace stop conditional
htrace record [data]*
htrace enable
htrace disable
htrace rewind [filename]
If filename is specified, new trace file is made and any newly collected data will be written there.
htrace print [start [len]]
htrace mode continuous
htrace mode suspend
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
GDB provides the following PowerPC-specific commands:
set powerpc soft-float
show powerpc soft-float
set powerpc vector-abi
show powerpc vector-abi
target dink32 dev
target ppcbug dev
target ppcbug1 dev
target sds dev
The following commands specific to the SDS protocol are supported by GDB:
set sdstimeout nsec
Set the timeout for SDS protocol reads to be nsec seconds. The default is 2 seconds.
show sdstimeout
Show the current value of the SDS timeout.
sds command
Send the specified command string to the SDS monitor.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
target op50n dev
target w89k dev
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
GDB enables developers to debug tasks running on
Sparclet targets from a Unix host.
GDB uses code that runs on
both the Unix host and on the Sparclet target. The program
gdb
is installed and executed on the Unix host.
remotetimeout args
GDB supports the option remotetimeout
.
This option is set by the user, and args represents the number of
seconds GDB waits for responses.
When compiling for debugging, include the options `-g' to get debug information and `-Ttext' to relocate the program to where you wish to load it on the target. You may also want to add the options `-n' or `-N' in order to reduce the size of the sections. Example:
sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N |
sparclet-aout-objdump --headers --syms prog |
(gdbslet) |
18.3.8.1 Setting File to Debug | Setting the file to debug | |
18.3.8.2 Connecting to Sparclet | ||
18.3.8.3 Sparclet Download | Sparclet download | |
18.3.8.4 Running and Debugging | Running and debugging |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
The GDB command file
lets you choose with program to debug.
(gdbslet) file prog |
prog: No such file or directory. |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
The GDB command target
lets you connect to a Sparclet target.
To connect to a target on serial port "ttya
", type:
(gdbslet) target sparclet /devlab/ttya Remote target sparclet connected to /devlab/ttya main () at ../prog.c:3 |
Connected to ttya. |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
Once connected to the Sparclet target,
you can use the GDB
load
command to download the file from the host to the target.
The file name and load offset should be given as arguments to the load
command.
Since the file format is aout, the program must be loaded to the starting
address. You can use objdump
to find out what this value is. The load
offset is an offset which is added to the VMA (virtual memory address)
of each of the file's sections.
For instance, if the program
`prog' was linked to text address 0x1201000, with data at 0x12010160
and bss at 0x12010170, in GDB, type:
(gdbslet) load prog 0x12010000 Loading section .text, size 0xdb0 vma 0x12010000 |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
You can now begin debugging the task using GDB's execution control
commands, b
, step
, run
, etc. See the GDB
manual for the list of commands.
(gdbslet) b main Breakpoint 1 at 0x12010000: file prog.c, line 3. (gdbslet) run Starting program: prog Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3 3 char *symarg = 0; (gdbslet) step 4 char *execarg = "hello!"; (gdbslet) |
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
target sparclite dev
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
When configured for debugging Zilog Z8000 targets, GDB includes a Z8000 simulator.
For the Z8000 family, `target sim' simulates either the Z8002 (the unsegmented variant of the Z8000 architecture) or the Z8001 (the segmented variant). The simulator recognizes which architecture is appropriate by inspecting the object code.
target sim args
Debug programs on a simulated CPU. If the simulator supports setup options, specify them via args.
After specifying this target, you can debug programs for the simulated
CPU in the same style as programs for your host computer; use the
file
command to load a new program image, the run
command
to run your program, and so on.
As well as making available all the usual machine registers (see section Registers), the Z8000 simulator provides three additional items of information as specially named registers:
cycles
insts
time
You can refer to these values in GDB expressions with the usual conventions; for example, `b fputc if $cycles>5000' sets a conditional breakpoint that suspends only after at least 5000 simulated clock ticks.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
When configured for debugging the Atmel AVR, GDB supports the following AVR-specific commands:
info io_registers
This command displays information about the AVR I/O registers. For each register, GDB prints its number and value.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
When configured for debugging CRIS, GDB provides the following CRIS-specific commands:
set cris-version ver
Set the current CRIS version to ver, either `10' or `32'. The CRIS version affects register names and sizes. This command is useful in case autodetection of the CRIS version fails.
show cris-version
set cris-dwarf2-cfi
Set the usage of DWARF-2 CFI for CRIS debugging. The default is `on'.
Change to `off' when using gcc-cris
whose version is below
R59
.
show cris-dwarf2-cfi
set cris-mode mode
Set the current CRIS mode to mode. It should only be changed when debugging in guru mode, in which case it should be set to `guru' (the default is `normal').
show cris-mode
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
For the Renesas Super-H processor, GDB provides these commands:
regs
Show the values of all Super-H registers.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
This section describes characteristics of architectures that affect all uses of GDB with the architecture, both native and cross.
18.4.1 x86 Architecture-specific Issues 18.4.2 A29K 18.4.3 Alpha 18.4.4 MIPS 18.4.5 HPPA HP PA architecture 18.4.6 Cell Broadband Engine SPU architecture 18.4.7 PowerPC
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
set struct-convention mode
Set the convention used by the inferior to return struct
s and
union
s from functions to mode. Possible values of
mode are "pcc"
, "reg"
, and "default"
(the
default). "default"
or "pcc"
means that struct
s
are returned on the stack, while "reg"
means that a
struct
or a union
whose size is 1, 2, 4, or 8 bytes will
be returned in a register.
show struct-convention
Show the current setting of the convention to return struct
s
from functions.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
set rstack_high_address address
set rstack_high_address
command. The argument should be an
address, which you probably want to precede with `0x' to specify in
hexadecimal.
show rstack_high_address
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
See the following section.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
Alpha- and MIPS-based computers use an unusual stack frame, which sometimes requires GDB to search backward in the object code to find the beginning of a function.
To improve response time (especially for embedded applications, where GDB may be restricted to a slow serial line for this search) you may want to limit the size of this search, using one of these commands:
set heuristic-fence-post limit
heuristic-fence-post
must search
and therefore the longer it takes to run. You should only need to use
this command when debugging a stripped executable.
show heuristic-fence-post
These commands are available only when GDB is configured for debugging programs on Alpha or MIPS processors.
Several MIPS-specific commands are available when debugging MIPS programs:
set mips abi arg
Tell GDB which MIPS ABI is used by the inferior. Possible values of arg are:
show mips abi
Show the MIPS ABI used by GDB to debug the inferior.
set mipsfpu
show mipsfpu
set mips mask-address arg
This command determines whether the most-significant 32 bits of 64-bit MIPS addresses are masked off. The argument arg can be `on', `off', or `auto'. The latter is the default setting, which lets GDB determine the correct value.
show mips mask-address
Show whether the upper 32 bits of MIPS addresses are masked off or not.
set remote-mips64-transfers-32bit-regs
This command controls compatibility with 64-bit MIPS targets that transfer data in 32-bit quantities. If you have an old MIPS 64 target that transfers 32 bits for some registers, like SR and FSR, and 64 bits for other registers, set this option to `on'.
show remote-mips64-transfers-32bit-regs
Show the current setting of compatibility with older MIPS 64 targets.
set debug mips
This command turns on and off debugging messages for the MIPS-specific target code in GDB.
show debug mips
Show the current setting of MIPS debugging messages.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
When GDB is debugging the HP PA architecture, it provides the following special commands:
set debug hppa
This command determines whether HPPA architecture-specific debugging messages are to be displayed.
show debug hppa
maint print unwind address
This command displays the contents of the unwind table entry at the given address.
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
When GDB is debugging the Cell Broadband Engine SPU architecture, it provides the following special commands:
info spu event
Display SPU event facility status. Shows current event mask and pending event status.
info spu signal
info spu mailbox
info spu dma
info spu proxydma
[ <] | [ >] | [ <<] | [ Up] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
When GDB is debugging the PowerPC architecture, it provides a set of
pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
numbers stored in the floating point registers. These values must be stored
in two consecutive registers, always starting at an even register like
f0
or f2
.
The pseudo-registers go from $dl0
through $dl15
, and are formed
by joining the even/odd register pairs f0
and f1
for $dl0
,
f2
and f3
for $dl1
and so on.
[ <<] | [ >>] | [Top] | [Contents] | [Index] | [ ?] |
Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.
These pages are maintained by the GDB developers.
Copyright Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
This document was generated by GDB Administrator on March, 27 2008 using texi2html