##### 23.2.2.1 Basic Python

gdb introduces a new Python module, named `gdb`. All methods and classes added by gdb are placed in this module. gdb automatically `import`s the `gdb` module for use in all scripts evaluated by the `python` command.

— Variable: PYTHONDIR

> A string containing the python directory (see Python).

— Function: execute command [from_tty] [to_string]

> Evaluate command, a string, as a gdb CLI command. If a GDB exception happens while command runs, it is translated as described in Exception Handling.

> from_tty specifies whether gdb ought to consider this command as having originated from the user invoking it interactively. It must be a boolean value. If omitted, it defaults to `False`.

> By default, any output produced by command is sent to gdb's standard output. If the to_string parameter is `True`, then output will be collected by `gdb.execute` and returned as a string. The default is `False`, in which case the return value is `None`. If to_string is `True`, the gdb virtual terminal will be temporarily set to unlimited width and height, and its pagination will be disabled; see Screen Size.

— Function: breakpoints

> Return a sequence holding all of gdb's breakpoints. See Breakpoints In Python, for more information.

— Function: parameter parameter

> Return the value of a gdb parameter. parameter is a string naming the parameter to look up; parameter may contain spaces if the parameter has a multi-part name. For example, ‘`print object`’ is a valid parameter name.

> If the named parameter does not exist, this function throws a `RuntimeError`. Otherwise, the parameter's value is converted to a Python value of the appropriate type, and returned.

— Function: history number

> Return a value from gdb's value history (see Value History). number indicates which history element to return. If number is negative, then gdb will take its absolute value and count backward from the last element (i.e., the most recent element) to find the value to return. If number is zero, then gdb will return the most recent element. If the element specified by number doesn't exist in the value history, a `RuntimeError` exception will be raised.

> If no exception is raised, the return value is always an instance of `gdb.Value` (see Values From Inferior).

— Function: parse_and_eval expression

> Parse expression as an expression in the current language, evaluate it, and return the result as a `gdb.Value`. expression must be a string.

> This function can be useful when implementing a new command (see Commands In Python), as it provides a way to parse the command's argument as an expression. It is also useful simply to compute values, for example, it is the only way to get the value of a convenience variable (see Convenience Vars) as a `gdb.Value`.

— Function: post_event event

> Put event, a callable object taking no arguments, into gdb's internal event queue. This callable will be invoked at some later point, during gdb's event processing. Events posted using `post_event` will be run in the order in which they were posted; however, there is no way to know when they will be processed relative to other events inside gdb.

> gdb is not thread-safe. If your Python program uses multiple threads, you must be careful to only call gdb-specific functions in the main gdb thread. `post_event` ensures this. For example:

>               (gdb) python
>               >import threading
>               >
>               >class Writer():
>               > def __init__(self, message):
>               >        self.message = message;
>               > def __call__(self):
>               >        gdb.write(self.message)
>               >
>               >class MyThread1 (threading.Thread):
>               > def run (self):
>               >        gdb.post_event(Writer("Hello "))
>               >
>               >class MyThread2 (threading.Thread):
>               > def run (self):
>               >        gdb.post_event(Writer("World\n"))
>               >
>               >MyThread1().start()
>               >MyThread2().start()
>               >end
>               (gdb) Hello World

— Function: write string

> Print a string to gdb's paginated standard output stream. Writing to `sys.stdout` or `sys.stderr` will automatically call this function.

— Function: flush

> Flush gdb's paginated standard output stream. Flushing `sys.stdout` or `sys.stderr` will automatically call this function.

— Function: target_charset

> Return the name of the current target character set (see Character Sets). This differs from `gdb.parameter('target-charset')` in that ‘`auto`’ is never returned.

— Function: target_wide_charset

> Return the name of the current target wide character set (see Character Sets). This differs from `gdb.parameter('target-wide-charset')` in that ‘`auto`’ is never returned.

— Function: solib_name address

> Return the name of the shared library holding the given address as a string, or `None`.

— Function: decode_line [expression]

> Return locations of the line specified by expression, or of the current line if no argument was given. This function returns a Python tuple containing two elements. The first element contains a string holding any unparsed section of expression (or `None` if the expression has been fully parsed). The second element contains either `None` or another tuple that contains all the locations that match the expression represented as `gdb.Symtab_and_line` objects (see Symbol Tables In Python). If expression is provided, it is decoded the way that gdb's inbuilt `break` or `edit` commands do (see Specify Location).