<HTML>
<HEAD>
<TITLE>Target Selection Help</TITLE>
</HEAD>
<BODY>
<H1>The Target Selection Dialog</H1>
<h2>Overview</h2>
<P>The Target Selection Dialog allows users to specify the debug target,
the interface used to connect to the target, and some useful run
options.</P>

<P>
<h3><A HREF="#select">Selecting a Target</A></h3>
<UL>
<LI><A HREF="#select">Specifying a Target</A></LI>
<LI><A HREF="#select_int">Choosing a Connection Interface</A></LI>
</UL>

<h3><A HREF="#options">Options</A></h3>
<UL>
<LI><A HREF="#options_run_until_main">Run until 'main'</A></LI>
<LI><A HREF="#options_bp_at_exit">Set breakpoint at 'exit'</A></LI>
<LI><A HREF="#options_set_bp_at">Set user-specifid breakpoint</A></LI>
<LI><A HREF="#options_download_dialog">Display Download Dialog</A></LI>
<LI><A HREF="#options_use_xterm">Use xterm for inferior's tty (unix only)
    </A></LI>
</UL>

<h3><A HREF="#more_options">More Options</A></h3>
<UL>
<LI><A HREF="#more_options_attach">Attach to Target</A></LI>
<LI><A HREF="#more_options_load">Download Program</A></LI>
<LI><A HREF="#more_options_run">Run Program</A></LI>
<LI><A HREF="#more_options_cont">Continue from Last Stop</A></LI>
</UL></P>

<H3><A NAME="select">Selecting a Target</A></H3>
Selecting a target involves choosing a target for debugging and setting connection
interface options for the target.

<P>Common targets include: "Exec" for native debuggers, "Remote/Serial" for establishing
a connection to a target board via a serial line, "Remote/TCP" for TCP connections,
and "Simulator" for connections to the simulator. There may be more depending on the
configuration of the debugger being used.</P>

<P>In general, "remote" targets are always serial connections which require the user
to specify the serial port and baud rate to be used for the connection and
"remote/tcp" targets are always TCP connections which require specifying the hostname
and port number of the machine to which to connect. Depending upon configuration,
there may be numerous serial- and TCP-based connections. These always follow the
naming convention <I>target</I>/Serial and <I>target</I>/TCP.</P>

<P>To select a target, choose one of the available targets
from the dropdown menu in the Connection Frame. Then <A NAME="#select_int">specify
the interface options</A> for this target: selecting the baudrate and serial port
from the dropdown menus (serial targets only) or entering the hostname and port number
(TCP targets only).</P>

<H3><A NAME="options">Options</A></H3>
Three run options which may be selected include:
<DL>
    <DT><A NAME="options_run_until_main">Run until 'main'</A>
        <DD>Sets a breakpoint at main()
    <DT><A NAME="options_bp_at_exit">Set breakpoint at 'exit'</A>
        <DD>Sets a breakpoint at exit()
    <DT><A NAME="options_set_bp_at">Set breakpoint at</A>
        <DD>Sets a breakpoint at a user-specified locaiton</A>
    <DT><A NAME="options_download_dialog">Display Download Dialog</A>
        <DD>Displays a dialog showing the progress of the download to
            the target section by section
    <DT><A NAME="options_use_xterm">Use xterm as inferior's tty</A>
        <DD>Causes insight to open a tty for inferior I/O (unix versions
            only)
</DL>
<BR>
<H3><A NAME="more_options">More Options</A></H3>
Several additional run options may be set for each target from the Target Selection
Dialog. These options govern the behavior of the debugger's
<A NAME="source.html#run_button">Run Button</A>. The debugger automatically selects
default values for these options whenever a target is selected with the dropdown menu
in the Connection Frame. To modify this default behavior, click the small triangle
next to "More Options" at the bottom of the dialog. The Run Options for the current
target are displayed, allowing modification of the actions for the target. When the
"OK" button is selected, these settings are saved and will be used as the default
for the target in future sessions.

<DL>
    <DT><A NAME="more_options_attach">Attach to Target</A>
        <DD>Establish a connection to the target board.
    <DT><A NAME="more_options_load">Download Program</A>
        <DD>Download the program to the target board.
    <DT><A NAME="more_options_run">Run Program</A>
        <DD>Run the program on the target board, creating a new
            "process". This option may not be specified along with
            the continue option. See note below.
    <DT><A NAME="more_options_cont">Continue from Last Stop</A>
        <DD>Continue the program on the target board from where
            it last stopped. This option may not be specified
            along with the "run" option. See note below.
</DL>

<P>Note that all remote targets typically do not "run" programs. Since target
boards are usually incapable of creating a new "process", these targets
seldom "Run". The defaults for all remote targets reflect this distinction: they
are all set to "Continue".</P>

<P>Only one of the options "Run Program" and "Continue from Last Stop" may be used.
Typically, the default behavior of this setting should not be altered.</P>
</BODY>
</HTML>
