|
|
|
@ -1,10 +1,10 @@ |
|
|
|
_dnl__ -*- Texinfo -*- |
|
|
|
_dnl__ Copyright (c) 1990 1991 Free Software Foundation, Inc. |
|
|
|
_dnl__ Copyright (c) 1990 1991 1992 Free Software Foundation, Inc. |
|
|
|
_dnl__ This file is part of the source for the GDB manual. |
|
|
|
@c M4 FRAGMENT $Id$ |
|
|
|
@c This text diverted to "Remote Debugging" section in general case; |
|
|
|
@c however, if we're doing a manual specifically for one of these, it |
|
|
|
@c belongs up front (in "Getting In and Out" chapter). |
|
|
|
_dnl__ M4 FRAGMENT $Id$ |
|
|
|
_dnl__ This text diverted to "Remote Debugging" section in general case; |
|
|
|
_dnl__ however, if we're doing a manual specifically for one of these, it |
|
|
|
_dnl__ belongs up front (in "Getting In and Out" chapter). |
|
|
|
_if__(_I960__) |
|
|
|
_if__(!_GENERIC__) |
|
|
|
@node i960-Nindy Remote, EB29K Remote, Mode Options, Starting _GDBN__ |
|
|
|
@ -30,7 +30,7 @@ By responding to a prompt on startup; |
|
|
|
|
|
|
|
@item |
|
|
|
By using the @code{target} command at any point during your _GDBN__ |
|
|
|
session. @xref{Target Commands}. |
|
|
|
session. @xref{Target Commands, ,Commands for Managing Targets}. |
|
|
|
|
|
|
|
@end itemize |
|
|
|
|
|
|
|
@ -46,15 +46,17 @@ session. @xref{Target Commands}. |
|
|
|
If you simply start @code{_GDBN__} without using any command-line |
|
|
|
options, you are prompted for what serial port to use, @emph{before} you |
|
|
|
reach the ordinary _GDBN__ prompt: |
|
|
|
|
|
|
|
@example |
|
|
|
Attach /dev/ttyNN -- specify NN, or "quit" to quit: |
|
|
|
@end example |
|
|
|
|
|
|
|
@noindent |
|
|
|
Respond to the prompt with whatever suffix (after @samp{/dev/tty}) |
|
|
|
identifies the serial port you want to use. You can, if you choose, |
|
|
|
simply start up with no Nindy connection by responding to the prompt |
|
|
|
with an empty line. If you do this, and later wish to attach to Nindy, |
|
|
|
use @code{target} (@pxref{Target Commands}). |
|
|
|
use @code{target} (@pxref{Target Commands, ,Commands for Managing Targets}). |
|
|
|
|
|
|
|
@node Nindy Options, Nindy reset, Nindy Startup, i960-Nindy Remote |
|
|
|
@subsubsection Options for Nindy |
|
|
|
@ -93,15 +95,15 @@ system, in an attempt to reset it, before connecting to a Nindy target. |
|
|
|
@emph{Warning:} Many target systems do not have the hardware that this |
|
|
|
requires; it only works with a few boards. |
|
|
|
@end quotation |
|
|
|
|
|
|
|
@end table |
|
|
|
|
|
|
|
The standard @samp{-b} option controls the line speed used on the serial |
|
|
|
port. |
|
|
|
port. |
|
|
|
|
|
|
|
@node Nindy reset, , Nindy Options, i960-Nindy Remote |
|
|
|
@c @group |
|
|
|
@node Nindy reset, , Nindy Options, i960-Nindy Remote |
|
|
|
@subsubsection Nindy Reset Command |
|
|
|
|
|
|
|
@table @code |
|
|
|
@item reset |
|
|
|
@kindex reset |
|
|
|
@ -139,11 +141,14 @@ you've hooked the cable between the PC's @file{COM1} port and |
|
|
|
|
|
|
|
@node Comms (EB29K), _GDBP__-EB29K, EB29K Remote, EB29K Remote |
|
|
|
@subsubsection Communications Setup |
|
|
|
|
|
|
|
The next step is to set up the PC's port, by doing something like the |
|
|
|
following in DOS on the PC: |
|
|
|
|
|
|
|
_0__@example |
|
|
|
C:\> MODE com1:9600,n,8,1,none |
|
|
|
_1__@end example |
|
|
|
|
|
|
|
@noindent |
|
|
|
This example---run on an MS DOS 4.0 system---sets the PC port to 9600 |
|
|
|
bps, no parity, eight data bits, one stop bit, and no ``retry'' action; |
|
|
|
@ -154,9 +159,11 @@ end of the connection as well. |
|
|
|
|
|
|
|
To give control of the PC to the Unix side of the serial line, type |
|
|
|
the following at the DOS console: |
|
|
|
|
|
|
|
_0__@example |
|
|
|
C:\> CTTY com1 |
|
|
|
_1__@end example |
|
|
|
|
|
|
|
@noindent |
|
|
|
(Later, if you wish to return control to the DOS console, you can use |
|
|
|
the command @code{CTTY con}---but you must send it over the device that |
|
|
|
@ -164,20 +171,24 @@ had control, in our example over the @file{COM1} serial line). |
|
|
|
|
|
|
|
From the Unix host, use a communications program such as @code{tip} or |
|
|
|
@code{cu} to communicate with the PC; for example, |
|
|
|
|
|
|
|
@example |
|
|
|
cu -s 9600 -l /dev/ttya |
|
|
|
@end example |
|
|
|
|
|
|
|
@noindent |
|
|
|
The @code{cu} options shown specify, respectively, the linespeed and the |
|
|
|
serial port to use. If you use @code{tip} instead, your command line |
|
|
|
may look something like the following: |
|
|
|
|
|
|
|
@example |
|
|
|
tip -9600 /dev/ttya |
|
|
|
@end example |
|
|
|
|
|
|
|
@noindent |
|
|
|
Your system may define a different name where our example uses |
|
|
|
@file{/dev/ttya} as the argument to @code{tip}. The communications |
|
|
|
parameters, including what port to use, are associated with the |
|
|
|
parameters, including which port to use, are associated with the |
|
|
|
@code{tip} argument in the ``remote'' descriptions file---normally the |
|
|
|
system table @file{/etc/remote}. |
|
|
|
@c FIXME: What if anything needs doing to match the "n,8,1,none" part of |
|
|
|
@ -195,6 +206,7 @@ start the PC program @code{EBMON} (an EB29K control program supplied |
|
|
|
with your board by AMD). You should see an initial display from |
|
|
|
@code{EBMON} similar to the one that follows, ending with the |
|
|
|
@code{EBMON} prompt @samp{#}--- |
|
|
|
|
|
|
|
_0__@example |
|
|
|
C:\> G: |
|
|
|
|
|
|
|
@ -233,7 +245,7 @@ running, ready for _GDBN__ to take over. |
|
|
|
For this example, we've assumed what is probably the most convenient |
|
|
|
way to make sure the same 29K program is on both the PC and the Unix |
|
|
|
system: a PC/NFS connection that establishes ``drive @code{G:}'' on the |
|
|
|
PC as a file system on the Unix host. If you don't have PC/NFS or |
|
|
|
PC as a file system on the Unix host. If you do not have PC/NFS or |
|
|
|
something similar connecting the two systems, you must arrange some |
|
|
|
other way---perhaps floppy-disk transfer---of getting the 29K program |
|
|
|
from the Unix system to the PC; _GDBN__ will @emph{not} download it over the |
|
|
|
@ -241,20 +253,24 @@ serial line. |
|
|
|
|
|
|
|
@node _GDBP__-EB29K, Remote Log, Comms (EB29K), EB29K Remote |
|
|
|
@subsubsection EB29K cross-debugging |
|
|
|
|
|
|
|
Finally, @code{cd} to the directory containing an image of your 29K |
|
|
|
program on the Unix system, and start _GDBN__---specifying as argument the |
|
|
|
name of your 29K program: |
|
|
|
|
|
|
|
@example |
|
|
|
cd /usr/joe/work29k |
|
|
|
_GDBP__ myfoo |
|
|
|
@end example |
|
|
|
|
|
|
|
Now you can use the @code{target} command: |
|
|
|
|
|
|
|
@example |
|
|
|
target amd-eb /dev/ttya 9600 MYFOO |
|
|
|
@end example |
|
|
|
@c FIXME: test above 'target amd-eb' as spelled, with caps! caps are meant to |
|
|
|
@c emphasize that this is the name as seen by DOS (since I think DOS is |
|
|
|
@c single-minded about case of letters). ---pesch@cygnus.com, 25feb91 |
|
|
|
@end example |
|
|
|
|
|
|
|
@noindent |
|
|
|
In this example, we've assumed your program is in a file called |
|
|
|
@ -264,12 +280,12 @@ In our example this is simply @code{MYFOO}, but in general it can include |
|
|
|
a DOS path, and depending on your transfer mechanism may not resemble |
|
|
|
the name on the Unix side. |
|
|
|
|
|
|
|
At this point, you can set any breakpoints you wish; when you're ready |
|
|
|
At this point, you can set any breakpoints you wish; when you are ready |
|
|
|
to see your program run on the 29K board, use the _GDBN__ command |
|
|
|
@code{run}. |
|
|
|
|
|
|
|
To stop debugging the remote program, use the _GDBN__ @code{detach} |
|
|
|
command. |
|
|
|
command. |
|
|
|
|
|
|
|
To return control of the PC to its console, use @code{tip} or @code{cu} |
|
|
|
once again, after your _GDBN__ session has concluded, to attach to |
|
|
|
@ -282,6 +298,7 @@ and type @kbd{~.} to leave @code{tip} or @code{cu}. |
|
|
|
@subsubsection Remote Log |
|
|
|
@kindex eb.log |
|
|
|
@cindex log file for EB29K |
|
|
|
|
|
|
|
The @code{target amd-eb} command creates a file @file{eb.log} in the |
|
|
|
current working directory, to help debug problems with the connection. |
|
|
|
@file{eb.log} records all the output from @code{EBMON}, including echoes |
|
|
|
@ -299,11 +316,12 @@ _if__(_GENERIC__) |
|
|
|
_fi__(_GENERIC__) |
|
|
|
@subsection _GDBN__ and VxWorks |
|
|
|
@cindex VxWorks |
|
|
|
|
|
|
|
_GDBN__ 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. _GDBN__ uses code that runs on |
|
|
|
both the UNIX host and on the VxWorks target. The program |
|
|
|
@code{_GDBP__} is installed and executed on the UNIX host. |
|
|
|
@code{_GDBP__} is installed and executed on the UNIX host. |
|
|
|
|
|
|
|
The remote debugging interface (RDB) routines are installed and executed |
|
|
|
on the VxWorks target. These routines are included in the VxWorks library |
|
|
|
@ -311,11 +329,16 @@ on the VxWorks target. These routines are included in the VxWorks library |
|
|
|
debugging is enabled in the VxWorks configuration. |
|
|
|
|
|
|
|
@kindex INCLUDE_RDB |
|
|
|
You can define @code{INCLUDE_RDB} in the VxWorks configuration file |
|
|
|
@file{configAll.h} to include the RDB interface routines and spawn the |
|
|
|
source debugging task @code{tRdbTask} when VxWorks is booted. For more |
|
|
|
information on configuring and remaking VxWorks, see the @cite{VxWorks |
|
|
|
Programmer's Guide}. |
|
|
|
If you wish, you can define @code{INCLUDE_RDB} in the VxWorks |
|
|
|
configuration file @file{configAll.h} to include the RDB interface |
|
|
|
routines and spawn the source debugging task @code{tRdbTask} when |
|
|
|
VxWorks is booted. For more information on configuring and remaking |
|
|
|
_if__(_FSF__) |
|
|
|
VxWorks, see the manufacturer's manual. |
|
|
|
_fi__(_FSF__) |
|
|
|
_if__(!_FSF__) |
|
|
|
VxWorks, see the @cite{VxWorks Programmer's Guide}. |
|
|
|
_fi__(!_FSF__) |
|
|
|
|
|
|
|
Once you have included the RDB interface in your VxWorks system image |
|
|
|
and set your Unix execution search path to find _GDBN__, you are ready |
|
|
|
@ -353,11 +376,11 @@ _GDBN__ will display a message similar to the following: |
|
|
|
Attaching remote machine across net... Success! |
|
|
|
@end smallexample |
|
|
|
|
|
|
|
_GDBN__ will then attempt to read the symbol tables of any object |
|
|
|
modules loaded into the VxWorks target since it was last booted. |
|
|
|
_GDBN__ locates these files by searching the directories listed in the |
|
|
|
command search path (@pxref{Environment}); if it fails to find an |
|
|
|
object file, it will display a message such as: |
|
|
|
_GDBN__ will then attempt to read the symbol tables of any object modules |
|
|
|
loaded into the VxWorks target since it was last booted. _GDBN__ locates |
|
|
|
these files by searching the directories listed in the command search |
|
|
|
path (@pxref{Environment, ,Your Program's Environment}); if it fails |
|
|
|
to find an object file, it will display a message such as: |
|
|
|
|
|
|
|
@smallexample |
|
|
|
prog.o: No such file or directory. |
|
|
|
@ -420,8 +443,8 @@ follows: |
|
|
|
(_GDBP__) attach @var{task} |
|
|
|
@end smallexample |
|
|
|
|
|
|
|
@noindent |
|
|
|
where @var{task} is the VxWorks hexadecimal task ID. The task can be running |
|
|
|
or suspended when you attach to it. If running, it will be suspended at |
|
|
|
the time of attachment. |
|
|
|
|
|
|
|
_fi__(_VXWORKS__) |
|
|
|
|