Async records are used to notify the gdb/mi client of additional changes that have occurred. Those changes can either be a consequence of gdb/mi commands (e.g., a breakpoint modified) or a result of target activity (e.g., target stopped).
The following is the list of possible async records:
*running,thread-id="
thread"
*stopped,reason="
reason",thread-id="
id",stopped-threads="
stopped",core="
core"
breakpoint-hit
watchpoint-trigger
read-watchpoint-trigger
access-watchpoint-trigger
function-finished
location-reached
watchpoint-scope
end-stepping-range
exited-signalled
exited
exited-normally
signal-received
solib-event
stop-on-solib-events
(see Files) is
set or when a catch load
or catch unload
catchpoint is
in use (see Set Catchpoints).
fork
catch fork
(see Set Catchpoints) has been used.
vfork
catch vfork
(see Set Catchpoints) has been used.
syscall-entry
catch
syscall
(see Set Catchpoints) has been used.
syscall-return
catch syscall
(see Set Catchpoints) has been used.
exec
exec
. This is reported when catch exec
(see Set Catchpoints) has been used.
The id field identifies the global thread ID of the thread
that directly caused the stop – for example by hitting a breakpoint.
Depending on whether all-stop
mode is in effect (see All-Stop Mode), gdb may either
stop all threads, or only the thread that directly triggered the stop.
If all threads are stopped, the stopped field will have the
value of "all"
. Otherwise, the value of the stopped
field will be a list of thread identifiers. Presently, this list will
always include a single thread, but frontend should be prepared to see
several threads in the list. The core field reports the
processor core on which the stop event has happened. This field may be absent
if such information is not available.
=thread-group-added,id="
id"
=thread-group-removed,id="
id"
=thread-group-started,id="
id",pid="
pid"
=thread-group-exited,id="
id"[,exit-code="
code"]
=thread-created,id="
id",group-id="
gid"
=thread-exited,id="
id",group-id="
gid"
=thread-selected,id="
id"[,frame="
frame"]
-thread-select
or
-stack-select-frame
commands, but is emitted whenever an MI command
that is not documented to change the selected thread and frame actually
changes them. In particular, invoking, directly or indirectly
(via user-defined command), the CLI thread
or frame
commands,
will generate this notification. Changing the thread or frame from another
user interface (see Interpreters) will also generate this notification.
The frame field is only present if the newly selected thread is stopped. See GDB/MI Frame Information for the format of its value.
We suggest that in response to this notification, front ends
highlight the selected thread and cause subsequent commands to apply to
that thread.
=library-loaded,...
=library-unloaded,...
=library-loaded
notification.
The thread-group field, if present, specifies the id of the
thread group in whose context the library was unloaded. If the field is
absent, it means the library was unloaded in the context of all present
thread groups.
=traceframe-changed,num=
tfnum,tracepoint=
tpnum=traceframe-changed,end
=tsv-created,name=
name,initial=
initial=tsv-deleted,name=
name=tsv-deleted
=tsv-modified,name=
name,initial=
initial[,current=
current]
=breakpoint-created,bkpt={...}
=breakpoint-modified,bkpt={...}
=breakpoint-deleted,id=
numberThe bkpt argument is of the same form as returned by the various breakpoint commands; See GDB/MI Breakpoint Commands. The number is the ordinal number of the breakpoint.
Note that if a breakpoint is emitted in the result record of a
command, then it will not also be emitted in an async record.
=record-started,thread-group="
id",method="
method"[,format="
format"]
=record-stopped,thread-group="
id"
The method field indicates the method used to record execution. If the
method in use supports multiple recording formats, format will be present
and contain the currently used format. See Process Record and Replay,
for existing method and format values.
=cmd-param-changed,param=
param,value=
valueset
param is
changed to value. In the multi-word set
command,
the param is the whole parameter list to set
command.
For example, In command set check type on
, param
is check type
and value is on
.
=memory-changed,thread-group=
id,addr=
addr,len=
len[,type="code"]
type="code"
part is reported if the memory written to holds
executable code.