Reputation: 1156
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?Upvotes: 4
Views: 3026
Reputation: 1156
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).
Upvotes: 3