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’ (see qXfer traceframe info read) packet and is an XML document.
gdb must be linked with the Expat library to support XML traceframe info discovery. See 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:
<memory start="addr" length="length"/>
<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>