blob: 09d7d05fe3c0d5d6cc2a4ccbe4c7369de7219972 [file] [log] [blame]
<html lang="en">
<head>
<title>Symbols In Python - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Python-API.html#Python-API" title="Python API">
<link rel="prev" href="Blocks-In-Python.html#Blocks-In-Python" title="Blocks In Python">
<link rel="next" href="Symbol-Tables-In-Python.html#Symbol-Tables-In-Python" title="Symbol Tables In Python">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Symbols-In-Python"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Symbol-Tables-In-Python.html#Symbol-Tables-In-Python">Symbol Tables In Python</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Blocks-In-Python.html#Blocks-In-Python">Blocks In Python</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Python-API.html#Python-API">Python API</a>
<hr>
</div>
<h5 class="subsubsection">23.2.2.17 Python representation of Symbols.</h5>
<p><a name="index-symbols-in-python-1841"></a><a name="index-gdb_002eSymbol-1842"></a>
<span class="sc">gdb</span> represents every variable, function and type as an
entry in a symbol table. See <a href="Symbols.html#Symbols">Examining the Symbol Table</a>.
Similarly, Python represents these symbols in <span class="sc">gdb</span> with the
<code>gdb.Symbol</code> object.
<p>The following symbol-related functions are available in the <code>gdb</code>
module:
<p><a name="index-gdb_002elookup_005fsymbol-1843"></a>
<div class="defun">
&mdash; Function: <b>lookup_symbol</b><var> name </var>[<var>block</var>] [<var>domain</var>]<var><a name="index-lookup_005fsymbol-1844"></a></var><br>
<blockquote><p>This function searches for a symbol by name. The search scope can be
restricted to the parameters defined in the optional domain and block
arguments.
<p><var>name</var> is the name of the symbol. It must be a string. The
optional <var>block</var> argument restricts the search to symbols visible
in that <var>block</var>. The <var>block</var> argument must be a
<code>gdb.Block</code> object. The optional <var>domain</var> argument restricts
the search to the domain type. The <var>domain</var> argument must be a
domain constant defined in the <code>gdb</code> module and described later
in this chapter.
</p></blockquote></div>
<p>A <code>gdb.Symbol</code> object has the following attributes:
<dl>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>symtab</b><var><a name="index-symtab-1845"></a></var><br>
<blockquote> <p>The symbol table in which the symbol appears. This attribute is
represented as a <code>gdb.Symtab</code> object. See <a href="Symbol-Tables-In-Python.html#Symbol-Tables-In-Python">Symbol Tables In Python</a>. This attribute is not writable.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>name</b><var><a name="index-name-1846"></a></var><br>
<blockquote> <p>The name of the symbol as a string. This attribute is not writable.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>linkage_name</b><var><a name="index-linkage_005fname-1847"></a></var><br>
<blockquote> <p>The name of the symbol, as used by the linker (i.e., may be mangled).
This attribute is not writable.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>print_name</b><var><a name="index-print_005fname-1848"></a></var><br>
<blockquote> <p>The name of the symbol in a form suitable for output. This is either
<code>name</code> or <code>linkage_name</code>, depending on whether the user
asked <span class="sc">gdb</span> to display demangled or mangled names.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>addr_class</b><var><a name="index-addr_005fclass-1849"></a></var><br>
<blockquote> <p>The address class of the symbol. This classifies how to find the value
of a symbol. Each address class is a constant defined in the
<code>gdb</code> module and described later in this chapter.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>is_argument</b><var><a name="index-is_005fargument-1850"></a></var><br>
<blockquote> <p><code>True</code> if the symbol is an argument of a function.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>is_constant</b><var><a name="index-is_005fconstant-1851"></a></var><br>
<blockquote> <p><code>True</code> if the symbol is a constant.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>is_function</b><var><a name="index-is_005ffunction-1852"></a></var><br>
<blockquote> <p><code>True</code> if the symbol is a function or a method.
</p></blockquote></div>
<div class="defun">
&mdash; Instance Variable of Symbol: <b>is_variable</b><var><a name="index-is_005fvariable-1853"></a></var><br>
<blockquote> <p><code>True</code> if the symbol is a variable.
</p></blockquote></div>
</dl>
<p>The available domain categories in <code>gdb.Symbol</code> are represented
as constants in the <code>gdb</code> module:
<a name="index-SYMBOL_005fUNDEF_005fDOMAIN-1854"></a>
<a name="index-gdb_002eSYMBOL_005fUNDEF_005fDOMAIN-1855"></a>
<dl><dt><code>SYMBOL_UNDEF_DOMAIN</code><dd>This is used when a domain has not been discovered or none of the
following domains apply. This usually indicates an error either
in the symbol information or in <span class="sc">gdb</span>'s handling of symbols.
<a name="index-SYMBOL_005fVAR_005fDOMAIN-1856"></a><a name="index-gdb_002eSYMBOL_005fVAR_005fDOMAIN-1857"></a><br><dt><code>SYMBOL_VAR_DOMAIN</code><dd>This domain contains variables, function names, typedef names and enum
type values.
<a name="index-SYMBOL_005fSTRUCT_005fDOMAIN-1858"></a><a name="index-gdb_002eSYMBOL_005fSTRUCT_005fDOMAIN-1859"></a><br><dt><code>SYMBOL_STRUCT_DOMAIN</code><dd>This domain holds struct, union and enum type names.
<a name="index-SYMBOL_005fLABEL_005fDOMAIN-1860"></a><a name="index-gdb_002eSYMBOL_005fLABEL_005fDOMAIN-1861"></a><br><dt><code>SYMBOL_LABEL_DOMAIN</code><dd>This domain contains names of labels (for gotos).
<a name="index-SYMBOL_005fVARIABLES_005fDOMAIN-1862"></a><a name="index-gdb_002eSYMBOL_005fVARIABLES_005fDOMAIN-1863"></a><br><dt><code>SYMBOL_VARIABLES_DOMAIN</code><dd>This domain holds a subset of the <code>SYMBOLS_VAR_DOMAIN</code>; it
contains everything minus functions and types.
<a name="index-SYMBOL_005fFUNCTIONS_005fDOMAIN-1864"></a><a name="index-gdb_002eSYMBOL_005fFUNCTIONS_005fDOMAIN-1865"></a><br><dt><code>SYMBOL_FUNCTION_DOMAIN</code><dd>This domain contains all functions.
<a name="index-SYMBOL_005fTYPES_005fDOMAIN-1866"></a><a name="index-gdb_002eSYMBOL_005fTYPES_005fDOMAIN-1867"></a><br><dt><code>SYMBOL_TYPES_DOMAIN</code><dd>This domain contains all types.
</dl>
<p>The available address class categories in <code>gdb.Symbol</code> are represented
as constants in the <code>gdb</code> module:
<a name="index-SYMBOL_005fLOC_005fUNDEF-1868"></a>
<a name="index-gdb_002eSYMBOL_005fLOC_005fUNDEF-1869"></a>
<dl><dt><code>SYMBOL_LOC_UNDEF</code><dd>If this is returned by address class, it indicates an error either in
the symbol information or in <span class="sc">gdb</span>'s handling of symbols.
<a name="index-SYMBOL_005fLOC_005fCONST-1870"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fCONST-1871"></a><br><dt><code>SYMBOL_LOC_CONST</code><dd>Value is constant int.
<a name="index-SYMBOL_005fLOC_005fSTATIC-1872"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fSTATIC-1873"></a><br><dt><code>SYMBOL_LOC_STATIC</code><dd>Value is at a fixed address.
<a name="index-SYMBOL_005fLOC_005fREGISTER-1874"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fREGISTER-1875"></a><br><dt><code>SYMBOL_LOC_REGISTER</code><dd>Value is in a register.
<a name="index-SYMBOL_005fLOC_005fARG-1876"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fARG-1877"></a><br><dt><code>SYMBOL_LOC_ARG</code><dd>Value is an argument. This value is at the offset stored within the
symbol inside the frame's argument list.
<a name="index-SYMBOL_005fLOC_005fREF_005fARG-1878"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fREF_005fARG-1879"></a><br><dt><code>SYMBOL_LOC_REF_ARG</code><dd>Value address is stored in the frame's argument list. Just like
<code>LOC_ARG</code> except that the value's address is stored at the
offset, not the value itself.
<a name="index-SYMBOL_005fLOC_005fREGPARM_005fADDR-1880"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fREGPARM_005fADDR-1881"></a><br><dt><code>SYMBOL_LOC_REGPARM_ADDR</code><dd>Value is a specified register. Just like <code>LOC_REGISTER</code> except
the register holds the address of the argument instead of the argument
itself.
<a name="index-SYMBOL_005fLOC_005fLOCAL-1882"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fLOCAL-1883"></a><br><dt><code>SYMBOL_LOC_LOCAL</code><dd>Value is a local variable.
<a name="index-SYMBOL_005fLOC_005fTYPEDEF-1884"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fTYPEDEF-1885"></a><br><dt><code>SYMBOL_LOC_TYPEDEF</code><dd>Value not used. Symbols in the domain <code>SYMBOL_STRUCT_DOMAIN</code> all
have this class.
<a name="index-SYMBOL_005fLOC_005fBLOCK-1886"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fBLOCK-1887"></a><br><dt><code>SYMBOL_LOC_BLOCK</code><dd>Value is a block.
<a name="index-SYMBOL_005fLOC_005fCONST_005fBYTES-1888"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fCONST_005fBYTES-1889"></a><br><dt><code>SYMBOL_LOC_CONST_BYTES</code><dd>Value is a byte-sequence.
<a name="index-SYMBOL_005fLOC_005fUNRESOLVED-1890"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fUNRESOLVED-1891"></a><br><dt><code>SYMBOL_LOC_UNRESOLVED</code><dd>Value is at a fixed address, but the address of the variable has to be
determined from the minimal symbol table whenever the variable is
referenced.
<a name="index-SYMBOL_005fLOC_005fOPTIMIZED_005fOUT-1892"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fOPTIMIZED_005fOUT-1893"></a><br><dt><code>SYMBOL_LOC_OPTIMIZED_OUT</code><dd>The value does not actually exist in the program.
<a name="index-SYMBOL_005fLOC_005fCOMPUTED-1894"></a><a name="index-gdb_002eSYMBOL_005fLOC_005fCOMPUTED-1895"></a><br><dt><code>SYMBOL_LOC_COMPUTED</code><dd>The value's address is a computed location.
</dl>
</body></html>