| Debugging with GDB | www.imodulo.com · 2003-04-05 | ||
| [ Software | Documentation | Contact ] |
The output from gdb/mi consists of zero or more out-of-band records followed, optionally, by a single result record. This result record is for the most recent command. The sequence of output records is terminated by (gdb).
If an input command was prefixed with a token then the corresponding output for that command will also be prefixed by that same token.
output ==>
( out-of-band-record )* [ result-record ] "(gdb)" nl
result-record ==>
[ token ] "^" result-class ( "," result )* nl
out-of-band-record ==>
async-record | stream-record
async-record ==>
exec-async-output | status-async-output | notify-async-output
exec-async-output ==>
[ token ] "*" async-output
status-async-output ==>
[ token ] "+" async-output
notify-async-output ==>
[ token ] "=" async-output
async-output ==>
async-class ( "," result )* nl
result-class ==>
"done" | "running" | "connected" | "error" | "exit"
async-class ==>
"stopped" | others (where others will be added depending on the needs--this is still in development).
result ==>
variable "=" value
variable ==>
string
value ==>
const | tuple | list
const ==>
c-string
tuple ==>
"{}" | "{" result ( "," result )* "}"
list ==>
"[]" | "[" value ( "," value )* "]" | "[" result ( "," result )* "]"
stream-record ==>
console-stream-output | target-stream-output | log-stream-output
console-stream-output ==>
"~" c-string
target-stream-output ==>
"@" c-string
log-stream-output ==>
"&" c-string
nl ==>
CR | CR-LF
token ==>any sequence of digits.
Notes:
All output sequences end in a single line containing a period.
The token is from the corresponding request. If an execution command is interrupted by the -exec-interrupt command, the token associated with the *stopped message is the one of the original execution command, not the one of the interrupt command.
status-async-output contains on-going status information about the progress of a slow operation. It can be discarded. All status output is prefixed by +.
exec-async-output contains asynchronous state change on the target (stopped, started, disappeared). All async output is prefixed by *.
notify-async-output contains supplementary information that the client should handle (e.g., a new breakpoint information). All notify output is prefixed by =.
console-stream-output is output that should be displayed as is in the console. It is the textual response to a CLI command. All the console output is prefixed by ~.
target-stream-output is the output produced by the target program. All the target output is prefixed by @.
log-stream-output is output text coming from GDB's internals, for instance messages that should be displayed as part of an error log. All the log output is prefixed by &.
New gdb/mi commands should only output lists containing values.
gdb/mi Stream Records, for more details about the various output records.
| © Free Software Foundation, Inc. |