Questions about compiling Python in debug mode

倾然丶 夕夏残阳落幕 提交于 2019-12-24 16:23:21

问题


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:

  • What to download to compile Python?
  • Where to type that ./configure?
  • What is going to happen to my current installation? Is it going to affect my system?
    I have read at many places that many processes on Ubuntu 12.04 are managed by Python and I do not want to mess up anything.

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?

    • If yes, how to compile Python back to its standard mode?

回答1:


Here are some inputs for anyone trying to compile Python in debug mode on Ubuntu:

  1. Download the version you need from the python website.
  2. Untar it using tar -xf and go to the new directory.

    Example:
    tar -xf Python2.7.3.tgz cd Python-2.7.3

  3. Configure your python installer for debug mode, using ./configure --with-pydebug. It will create a Makefile that you will just have to run.

  4. 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).



来源:https://stackoverflow.com/questions/36697863/questions-about-compiling-python-in-debug-mode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!