You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.2 KiB
72 lines
2.2 KiB
4 months ago
|
Caveats
|
||
|
=======
|
||
|
|
||
|
.. contents::
|
||
|
:local:
|
||
|
|
||
|
.. _python_caveat:
|
||
|
|
||
|
Python
|
||
|
------
|
||
|
|
||
|
LLDB has a powerful scripting interface which is accessible through Python.
|
||
|
Python is available either from within LLDB through a (interactive) script
|
||
|
interpreter, or as a Python module which you can import from the Python
|
||
|
interpreter.
|
||
|
|
||
|
To make this possible, LLDB links against the Python shared library. Linking
|
||
|
against Python comes with some constraints to be aware of.
|
||
|
|
||
|
1. It is not possible to build and link LLDB against a Python 3 library and
|
||
|
use it from Python 2 and vice versa.
|
||
|
|
||
|
2. It is not possible to build and link LLDB against one distribution on
|
||
|
Python and use it through a interpreter coming from another distribution.
|
||
|
For example, on macOS, if you build and link against Python from
|
||
|
python.org, you cannot import the lldb module from the Python interpreter
|
||
|
installed with Homebrew.
|
||
|
|
||
|
3. To use third party Python packages from inside LLDB, you need to install
|
||
|
them using a utility (such as ``pip``) from the same Python distribution as
|
||
|
the one used to build and link LLDB.
|
||
|
|
||
|
The previous considerations are especially important during development, but
|
||
|
apply to binary distributions of LLDB as well.
|
||
|
|
||
|
LLDB in Xcode on macOS
|
||
|
``````````````````````
|
||
|
|
||
|
Users of lldb in Xcode on macOS commonly run into these issues when they
|
||
|
install Python, often unknowingly as a dependency pulled in by Homebrew or
|
||
|
other package managers. The problem is the symlinks that get created in
|
||
|
``/usr/local/bin``, which comes before ``/usr/bin`` in your path. You can use
|
||
|
``which python3`` to check to what it resolves.
|
||
|
|
||
|
To be sure you use the Python that matches with the lldb in Xcode use ``xcrun``
|
||
|
or use the absolute path to the shims in ``/usr/bin``.
|
||
|
|
||
|
::
|
||
|
|
||
|
$ xcrun python3
|
||
|
$ /usr/bin/python3
|
||
|
|
||
|
Similarly, to install packages and be able to use them from within lldb, you'll
|
||
|
need to install them with the matching ``pip3``.
|
||
|
|
||
|
::
|
||
|
|
||
|
$ xcrun pip3
|
||
|
$ /usr/bin/pip3
|
||
|
|
||
|
The same is true for Python 2. Although Python 2 comes with the operating
|
||
|
system rather than Xcode, you can still use ``xcrun`` to launch the system
|
||
|
variant.
|
||
|
|
||
|
::
|
||
|
|
||
|
$ xcrun python
|
||
|
$ /usr/bin/python
|
||
|
|
||
|
Keep in mind that Python 2 is deprecated and no longer maintained. Future
|
||
|
versions of macOS will not include Python 2.7.
|