### 27.20 GDB/MI Target Manipulation Commands

#### The `-target-attach` Command

#### Synopsis

     -target-attach pid | gid | file

Attach to a process pid or a file file outside of GDB, or a thread group gid. If attaching to a thread group, the id previously returned by ‘`-list-thread-groups --available`’ must be used.

#### GDB Command

The corresponding GDB command is ‘`attach`’.

#### Example

    (gdb)
    -target-attach 34
    =thread-created,id="1"
    *stopped,thread-id="1",frame={addr="0xb7f7e410",func="bar",args=[]}
    ^done
    (gdb)

#### The `-target-detach` Command

#### Synopsis

     -target-detach [ pid | gid ]

Detach from the remote target which normally resumes its execution. If either pid or gid is specified, detaches from either the specified process, or specified thread group. There’s no output.

#### GDB Command

The corresponding GDB command is ‘`detach`’.

#### Example

    (gdb)
    -target-detach
    ^done
    (gdb)

#### The `-target-disconnect` Command

#### Synopsis

     -target-disconnect

Disconnect from the remote target. There’s no output and the target is generally not resumed.

#### GDB Command

The corresponding GDB command is ‘`disconnect`’.

#### Example

    (gdb)
    -target-disconnect
    ^done
    (gdb)

#### The `-target-download` Command

#### Synopsis

     -target-download

Loads the executable onto the remote target. It prints out an update message every half second, which includes the fields:

‘`section`’

  The name of the section.

‘`section-sent`’

  The size of what has been sent so far for that section.

‘`section-size`’

  The size of the section.

‘`total-sent`’

  The total size of what was sent so far (the current and the previous sections).

‘`total-size`’

  The size of the overall executable to download.

Each message is sent as status record (see GDB/MI Output Syntax).

In addition, it prints the name and size of the sections, as they are downloaded. These messages include the following fields:

‘`section`’

  The name of the section.

‘`section-size`’

  The size of the section.

‘`total-size`’

  The size of the overall executable to download.

At the end, a summary is printed.

#### GDB Command

The corresponding GDB command is ‘`load`’.

#### Example

Note: each status message appears on a single line. Here the messages have been broken down so that they can fit onto a page.

    (gdb)
    -target-download
    +download,{section=".text",section-size="6668",total-size="9880"}
    +download,{section=".text",section-sent="512",section-size="6668",
    total-sent="512",total-size="9880"}
    +download,{section=".text",section-sent="1024",section-size="6668",
    total-sent="1024",total-size="9880"}
    +download,{section=".text",section-sent="1536",section-size="6668",
    total-sent="1536",total-size="9880"}
    +download,{section=".text",section-sent="2048",section-size="6668",
    total-sent="2048",total-size="9880"}
    +download,{section=".text",section-sent="2560",section-size="6668",
    total-sent="2560",total-size="9880"}
    +download,{section=".text",section-sent="3072",section-size="6668",
    total-sent="3072",total-size="9880"}
    +download,{section=".text",section-sent="3584",section-size="6668",
    total-sent="3584",total-size="9880"}
    +download,{section=".text",section-sent="4096",section-size="6668",
    total-sent="4096",total-size="9880"}
    +download,{section=".text",section-sent="4608",section-size="6668",
    total-sent="4608",total-size="9880"}
    +download,{section=".text",section-sent="5120",section-size="6668",
    total-sent="5120",total-size="9880"}
    +download,{section=".text",section-sent="5632",section-size="6668",
    total-sent="5632",total-size="9880"}
    +download,{section=".text",section-sent="6144",section-size="6668",
    total-sent="6144",total-size="9880"}
    +download,{section=".text",section-sent="6656",section-size="6668",
    total-sent="6656",total-size="9880"}
    +download,{section=".init",section-size="28",total-size="9880"}
    +download,{section=".fini",section-size="28",total-size="9880"}
    +download,{section=".data",section-size="3156",total-size="9880"}
    +download,{section=".data",section-sent="512",section-size="3156",
    total-sent="7236",total-size="9880"}
    +download,{section=".data",section-sent="1024",section-size="3156",
    total-sent="7748",total-size="9880"}
    +download,{section=".data",section-sent="1536",section-size="3156",
    total-sent="8260",total-size="9880"}
    +download,{section=".data",section-sent="2048",section-size="3156",
    total-sent="8772",total-size="9880"}
    +download,{section=".data",section-sent="2560",section-size="3156",
    total-sent="9284",total-size="9880"}
    +download,{section=".data",section-sent="3072",section-size="3156",
    total-sent="9796",total-size="9880"}
    ^done,address="0x10004",load-size="9880",transfer-rate="6586",
    write-rate="429"
    (gdb)

#### GDB Command

No equivalent.

#### Example

N.A.

#### The `-target-flash-erase` Command

#### Synopsis

     -target-flash-erase

Erases all known flash memory regions on the target.

The corresponding GDB command is ‘`flash-erase`’.

The output is a list of flash regions that have been erased, with starting addresses and memory region sizes.

    (gdb)
    -target-flash-erase
    ^done,erased-regions={address="0x0",size="0x40000"}
    (gdb)

#### The `-target-select` Command

#### Synopsis

     -target-select type parameters …

Connect GDB to the remote target. This command takes two args:

‘`type`’

  The type of target, for instance ‘`remote`’, etc.

‘`parameters`’

  Device names, host names and the like. See Commands for Managing Targets, for more details.

The output is a connection notification, followed by the address at which the target program is, in the following form:

    ^connected,addr="address",func="function name",
      args=[arg list]

#### GDB Command

The corresponding GDB command is ‘`target`’.

#### Example

    (gdb)
    -target-select remote /dev/ttya
    ^connected,addr="0xfe00a300",func="??",args=[]
    (gdb)