hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Free Software" and "Free Software Needs
Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
and with the Back-Cover Texts as in (a) below.
 
(a) The FSF's Back-Cover Text is: "You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: Traceframe Info Format</title>
 
<meta name="description" content="Debugging with GDB: Traceframe Info Format">
<meta name="keywords" content="Debugging with GDB: Traceframe Info Format">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Remote-Protocol.html#Remote-Protocol" rel="up" title="Remote Protocol">
<link href="Branch-Trace-Format.html#Branch-Trace-Format" rel="next" title="Branch Trace Format">
<link href="Thread-List-Format.html#Thread-List-Format" rel="prev" title="Thread List Format">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Traceframe-Info-Format"></a>
<div class="header">
<p>
Next: <a href="Branch-Trace-Format.html#Branch-Trace-Format" accesskey="n" rel="next">Branch Trace Format</a>, Previous: <a href="Thread-List-Format.html#Thread-List-Format" accesskey="p" rel="prev">Thread List Format</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Traceframe-Info-Format-1"></a>
<h3 class="section">E.18 Traceframe Info Format</h3>
<a name="index-traceframe-info-format"></a>
 
<p>To be able to know which objects in the inferior can be examined when
inspecting a tracepoint hit, <small>GDB</small> needs to obtain the list of
memory ranges, registers and trace state variables that have been
collected in a traceframe.
</p>
<p>This list is obtained using the &lsquo;<samp>qXfer:traceframe-info:read</samp>&rsquo;
(see <a href="General-Query-Packets.html#qXfer-traceframe-info-read">qXfer traceframe info read</a>) packet and is an XML document.
</p>
<p><small>GDB</small> must be linked with the Expat library to support XML
traceframe info discovery.  See <a href="Requirements.html#Expat">Expat</a>.
</p>
<p>The top-level structure of the document is shown below:
</p>
<div class="smallexample">
<pre class="smallexample">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE traceframe-info
          PUBLIC &quot;+//IDN gnu.org//DTD GDB Memory Map V1.0//EN&quot;
                 &quot;http://sourceware.org/gdb/gdb-traceframe-info.dtd&quot;&gt;
&lt;traceframe-info&gt;
   block...
&lt;/traceframe-info&gt;
</pre></div>
 
<p>Each traceframe block can be either:
</p>
<ul>
<li> A region of collected memory starting at <var>addr</var> and extending for
<var>length</var> bytes from there:
 
<div class="smallexample">
<pre class="smallexample">&lt;memory start=&quot;<var>addr</var>&quot; length=&quot;<var>length</var>&quot;/&gt;
</pre></div>
 
</li><li> A block indicating trace state variable numbered <var>number</var> has been
collected:
 
<div class="smallexample">
<pre class="smallexample">&lt;tvar id=&quot;<var>number</var>&quot;/&gt;
</pre></div>
 
</li></ul>
 
<p>The formal DTD for the traceframe info format is given below:
</p>
<div class="smallexample">
<pre class="smallexample">&lt;!ELEMENT traceframe-info  (memory | tvar)* &gt;
&lt;!ATTLIST traceframe-info  version CDATA   #FIXED  &quot;1.0&quot;&gt;
 
&lt;!ELEMENT memory        EMPTY&gt;
&lt;!ATTLIST memory        start   CDATA   #REQUIRED
                        length  CDATA   #REQUIRED&gt;
&lt;!ELEMENT tvar&gt;
&lt;!ATTLIST tvar          id      CDATA   #REQUIRED&gt;
</pre></div>
 
 
 
 
</body>
</html>