I am using Ubuntu 12.04, Python 2.7.3.
I am having a segmentation fault in a C
extension I have co-written. It seems to come from a pointer that was not free'd properly.
I then use valgrind
to find memory leaks. According to that answer, I have to compile Python
in debug mode to get a valgrind
friendly version of Python
and get rid of its irrelevant reports.
How to compile Python
in debug mode?
Even though the answer I linked answers part of that question, it does not provide me enough details.
Indeed, I want to understand what is happening, not just type things at some places because "who knows? It could work".
Hence, I would like to know:
./configure
?I am also trying to find answers to the questions mentioned by Yair Daon's comment:
Do you have to recompile Python
once you are done using its debug
compilation?
Python
back to its standard mode?Here are some inputs for anyone trying to compile Python in debug mode on Ubuntu:
Untar it using tar -xf
and go to the new directory.
Example:
tar -xf Python2.7.3.tgz
cd Python-2.7.3
Configure your python installer for debug mode, using ./configure --with-pydebug
. It will create a Makefile
that you will just have to run.
Compile the sources to create your new python interpreter by running the Makefile
, using: make install
.
As you create a new interpreter, your system's Python will stay clean.
If you compiled it using --prefix=/home/username/workspace/project/python/
, you can now run your script with your new Python interpreter using:
/home/username/workspace/project/python/bin/python script.py
Or, you can also add the shebang line #!/home/username/workspace/project/python/bin/python
at the beginning of your script, give it the execute privilege (sudo chmod 764 script.py
) and run it more easily using your new Python interpreter by typing ./script.py
.
Note: you may want to check Python's documentation for more configuring / compiling flags (such as --prefix / -j, thanks Chris for the link).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With