<trvalign=top><td><b>file.basename</b></td><td>The current compile unit file basename for the current frame.</td></tr>
<trvalign=top><td><b>file.fullpath</b></td><td>The current compile unit file fullpath for the current frame.</td></tr>
<trvalign=top><td><b>frame.index</b></td><td>The frame index (0, 1, 2, 3...)</td></tr>
<trvalign=top><td><b>frame.pc</b></td><td>The generic frame register for the program counter.</td></tr>
<trvalign=top><td><b>frame.sp</b></td><td>The generic frame register for the stack pointer.</td></tr>
<trvalign=top><td><b>frame.fp</b></td><td>The generic frame register for the frame pointer.</td></tr>
<trvalign=top><td><b>frame.flags</b></td><td>The generic frame register for the flags register.</td></tr>
<trvalign=top><td><b>frame.reg.NAME</b></td><td>Access to any platform specific register by name (replace <b>NAME</b> with the name of the desired register).</td></tr>
<trvalign=top><td><b>function.name</b></td><td>The name of the current function or symbol.</td></tr>
<trvalign=top><td><b>function.name-with-args</b></td><td>The name of the current function with arguments and values or the symbol name.</td></tr>
<trvalign=top><td><b>function.pc-offset</b></td><td>The program counter offset within the current function or symbol</td></tr>
<trvalign=top><td><b>line.file.basename</b></td><td>The line table entry basename to the file for the current line entry in the current frame.</td></tr>
<trvalign=top><td><b>line.file.fullpath</b></td><td>The line table entry fullpath to the file for the current line entry in the current frame.</td></tr>
<trvalign=top><td><b>line.number</b></td><td>The line table entry line number for the current line entry in the current frame.</td></tr>
<trvalign=top><td><b>line.start-addr</b></td><td>The line table entry start address for the current line entry in the current frame.</td></tr>
<trvalign=top><td><b>line.end-addr</b></td><td>The line table entry end address for the current line entry in the current frame.</td></tr>
<trvalign=top><td><b>module.file.basename</b></td><td>The basename of the current module (shared library or executable)</td></tr>
<trvalign=top><td><b>module.file.fullpath</b></td><td>The basename of the current module (shared library or executable)</td></tr>
<trvalign=top><td><b>process.file.basename</b></td><td>The basename of the file for the process</td></tr>
<trvalign=top><td><b>process.file.fullpath</b></td><td>The fullname of the file for the process</td></tr>
<trvalign=top><td><b>process.id</b></td><td>The process ID native the the system on which the inferior runs.</td></tr>
<trvalign=top><td><b>process.name</b></td><td>The name of the process at runtime</td></tr>
<trvalign=top><td><b>thread.id</b></td><td>The thread identifier for the current thread</td></tr>
<trvalign=top><td><b>thread.index</b></td><td>The unique one based thread index ID which is guaranteed to be unique as threads come and go.</td></tr>
<trvalign=top><td><b>thread.name</b></td><td>The name of the thread if the target OS supports naming threads</td></tr>
<trvalign=top><td><b>thread.queue</b></td><td>The queue name of the thread if the target OS supports dispatch queues</td></tr>
<trvalign=top><td><b>thread.stop-reason</b></td><td>A textual reason each thread stopped</td></tr>
<trvalign=top><td><b>thread.return-value</b></td><td>The return value of the latest step operation (currently only for step-out.)</td></tr>
<trvalign=top><td><b>target.arch</b></td><td>The architecture of the current target</td></tr>
<trvalign=top><td><b>target.script:<i>python_func</i></b></td><td>Use a Python function to generate a piece of textual output</td></tr>
<trvalign=top><td><b>process.script:<i>python_func</i></b></td><td>Use a Python function to generate a piece of textual output</td></tr>
<trvalign=top><td><b>thread.script:<i>python_func</i></b></td><td>Use a Python function to generate a piece of textual output</td></tr>
<trvalign=top><td><b>frame.script:<i>python_func</i></b></td><td>Use a Python function to generate a piece of textual output</td></tr>
</table>
</div>
<divclass="postfooter"></div>
</div>
<divclass="post">
<h1class ="postheader">Control Characters</h1>
<divclass="postcontent">
<p>Control characters include <b><code>'{'</code></b>,
<b><code>'}'</code></b>, and <b><code>'\'</code></b>.</p>
<p>The '{' and '}' are used for scoping blocks, and the '\' character
allows you to desensitize control characters and also emit non-printable
characters.
</div>
<divclass="postfooter"></div>
</div>
<divclass="post">
<h1class ="postheader">Desensitizing Characters in the format string</h1>
<divclass="postcontent">
<p>The backslash control character allows your to enter the typical
<p>Looking at the default format for the thread, and underlining
the frame information:
<p><code>'thread #${thread.index}: tid = ${thread.id}<u><b>{</b>, ${frame.pc}<b>}{</b> ${module.file.basename}`${function.name}{${function.pc-offset}}<b>}</b></u>{, stop reason = ${thread.stop-reason}}{, name = ${thread.name}}{, queue = ${thread.queue}}\n'
</code></p>
<p>We can see that all frame information is contained in scopes so
that when the thread information is displayed in a context where
we only want to show thread information, we can do so.
<p>For both thread and frame formats, you can use ${target.script:<i>python_func</i>}, ${process.script:<i>python_func</i>} and ${thread.script:<i>python_func</i>}
(and of course ${frame.script:<i>python_func</i>} for frame formats)<br/>
In all cases, the signature of <i>python_func</i> is expected to be:<br/>