1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc. 4 5Permission is granted to copy, distribute and/or modify this document 6under the terms of the GNU Free Documentation License, Version 1.3 or 7any later version published by the Free Software Foundation; with the 8Invariant Sections being "Free Software" and "Free Software Needs 9Free Documentation", with the Front-Cover Texts being "A GNU Manual," 10and with the Back-Cover Texts as in (a) below. 11 12(a) The FSF's Back-Cover Text is: "You are free to copy and modify 13this GNU Manual. Buying copies from GNU Press supports the FSF in 14developing GNU and promoting software freedom." --> 15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 16<head> 17<title>Debugging with GDB: Using Agent Expressions</title> 18 19<meta name="description" content="Debugging with GDB: Using Agent Expressions"> 20<meta name="keywords" content="Debugging with GDB: Using Agent Expressions"> 21<meta name="resource-type" content="document"> 22<meta name="distribution" content="global"> 23<meta name="Generator" content="makeinfo"> 24<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 25<link href="index.html#Top" rel="start" title="Top"> 26<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> 27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 28<link href="Agent-Expressions.html#Agent-Expressions" rel="up" title="Agent Expressions"> 29<link href="Varying-Target-Capabilities.html#Varying-Target-Capabilities" rel="next" title="Varying Target Capabilities"> 30<link href="Bytecode-Descriptions.html#Bytecode-Descriptions" rel="previous" title="Bytecode Descriptions"> 31<style type="text/css"> 32<!-- 33a.summary-letter {text-decoration: none} 34blockquote.smallquotation {font-size: smaller} 35div.display {margin-left: 3.2em} 36div.example {margin-left: 3.2em} 37div.indentedblock {margin-left: 3.2em} 38div.lisp {margin-left: 3.2em} 39div.smalldisplay {margin-left: 3.2em} 40div.smallexample {margin-left: 3.2em} 41div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 42div.smalllisp {margin-left: 3.2em} 43kbd {font-style:oblique} 44pre.display {font-family: inherit} 45pre.format {font-family: inherit} 46pre.menu-comment {font-family: serif} 47pre.menu-preformatted {font-family: serif} 48pre.smalldisplay {font-family: inherit; font-size: smaller} 49pre.smallexample {font-size: smaller} 50pre.smallformat {font-family: inherit; font-size: smaller} 51pre.smalllisp {font-size: smaller} 52span.nocodebreak {white-space:nowrap} 53span.nolinebreak {white-space:nowrap} 54span.roman {font-family:serif; font-weight:normal} 55span.sansserif {font-family:sans-serif; font-weight:normal} 56ul.no-bullet {list-style: none} 57--> 58</style> 59 60 61</head> 62 63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 64<a name="Using-Agent-Expressions"></a> 65<div class="header"> 66<p> 67Next: <a href="Varying-Target-Capabilities.html#Varying-Target-Capabilities" accesskey="n" rel="next">Varying Target Capabilities</a>, Previous: <a href="Bytecode-Descriptions.html#Bytecode-Descriptions" accesskey="p" rel="previous">Bytecode Descriptions</a>, Up: <a href="Agent-Expressions.html#Agent-Expressions" accesskey="u" rel="up">Agent Expressions</a> [<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> 68</div> 69<hr> 70<a name="Using-Agent-Expressions-1"></a> 71<h3 class="section">F.3 Using Agent Expressions</h3> 72 73<p>Agent expressions can be used in several different ways by <small>GDB</small>, 74and the debugger can generate different bytecode sequences as appropriate. 75</p> 76<p>One possibility is to do expression evaluation on the target rather 77than the host, such as for the conditional of a conditional 78tracepoint. In such a case, <small>GDB</small> compiles the source 79expression into a bytecode sequence that simply gets values from 80registers or memory, does arithmetic, and returns a result. 81</p> 82<p>Another way to use agent expressions is for tracepoint data 83collection. <small>GDB</small> generates a different bytecode sequence for 84collection; in addition to bytecodes that do the calculation, 85<small>GDB</small> adds <code>trace</code> bytecodes to save the pieces of 86memory that were used. 87</p> 88<ul> 89<li> The user selects trace points in the program’s code at which GDB should 90collect data. 91 92</li><li> The user specifies expressions to evaluate at each trace point. These 93expressions may denote objects in memory, in which case those objects’ 94contents are recorded as the program runs, or computed values, in which 95case the values themselves are recorded. 96 97</li><li> GDB transmits the tracepoints and their associated expressions to the 98GDB agent, running on the debugging target. 99 100</li><li> The agent arranges to be notified when a trace point is hit. 101 102</li><li> When execution on the target reaches a trace point, the agent evaluates 103the expressions associated with that trace point, and records the 104resulting values and memory ranges. 105 106</li><li> Later, when the user selects a given trace event and inspects the 107objects and expression values recorded, GDB talks to the agent to 108retrieve recorded data as necessary to meet the user’s requests. If the 109user asks to see an object whose contents have not been recorded, GDB 110reports an error. 111 112</li></ul> 113 114 115<hr> 116<div class="header"> 117<p> 118Next: <a href="Varying-Target-Capabilities.html#Varying-Target-Capabilities" accesskey="n" rel="next">Varying Target Capabilities</a>, Previous: <a href="Bytecode-Descriptions.html#Bytecode-Descriptions" accesskey="p" rel="previous">Bytecode Descriptions</a>, Up: <a href="Agent-Expressions.html#Agent-Expressions" accesskey="u" rel="up">Agent Expressions</a> [<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> 119</div> 120 121 122 123</body> 124</html> 125