gdb: Traceframe Info Format
E.18 Traceframe Info Format
===========================
To be able to know which objects in the inferior can be examined when
inspecting a tracepoint hit, GDB needs to obtain the list of memory
ranges, registers and trace state variables that have been collected in
a traceframe.
This list is obtained using the 'qXfer:traceframe-info:read' (
qXfer traceframe info read) packet and is an XML document.
GDB must be linked with the Expat library to support XML traceframe
info discovery. Expat.
The top-level structure of the document is shown below:
<?xml version="1.0"?>
<!DOCTYPE traceframe-info
PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
"http://sourceware.org/gdb/gdb-traceframe-info.dtd">
<traceframe-info>
block...
</traceframe-info>
Each traceframe block can be either:
* A region of collected memory starting at ADDR and extending for
LENGTH bytes from there:
<memory start="ADDR" length="LENGTH"/>
* A block indicating trace state variable numbered NUMBER has been
collected:
<tvar id="NUMBER"/>
The formal DTD for the traceframe info format is given below:
<!ELEMENT traceframe-info (memory | tvar)* >
<!ATTLIST traceframe-info version CDATA #FIXED "1.0">
<!ELEMENT memory EMPTY>
<!ATTLIST memory start CDATA #REQUIRED
length CDATA #REQUIRED>
<!ELEMENT tvar>
<!ATTLIST tvar id CDATA #REQUIRED>