关于在调试模式下编译Python的问题

4
我正在使用Ubuntu 12.04和Python 2.7.3版本。
我在一个我共同编写的C扩展中遇到了段错误。似乎是由于未正确释放指针引起的。
我随后使用valgrind查找内存泄漏。根据这个答案,我必须以调试模式编译Python,才能得到与valgrind兼容的版本,并摆脱不相关的报告。
如何以调试模式编译Python?
尽管我链接的答案回答了部分问题,但它没有为我提供足够的细节。实际上,我想要理解正在发生的事情,而不仅仅是在某些地方输入一些字符,因为“谁知道呢?它可能会起作用”。
因此,我想知道:
  • 下载什么来编译Python?
  • 在哪里输入 ./configure
  • 我的当前安装会发生什么?它会影响我的系统吗?因为我已经在很多地方读到,Ubuntu 12.04上的许多进程都是由Python管理的,我不希望弄乱任何东西。
我也试图找到Yair Daon评论中提到的问题的答案:
  • 在使用调试编译后,您是否必须重新编译Python?
    • 如果是,如何将Python编译回其标准模式?

在你链接的问题的被接受答案中,已经给出了“如何以调试模式编译Python”的问题。如果那个答案不能满足你的需求,你需要更详细地解释它们。 - Chris
只写了一个命令。我看到回答,却不知道要下载什么,也不知道在哪里输入那个命令,以及我的之前安装的Python会发生什么(我不想搞乱我当前的Python安装...)。这就是为什么我在这里请求一个完整的解释。 - DRz
2
感谢您更新问题。我认为对您最有帮助的就是查看官方的开发者指南。在“快速入门”和“设置页面”下,您可能会找到大部分需要的内容。如果您在主目录中构建新的Python,则不应与系统Python发生冲突。只需确保不要运行sudo make install或类似命令(实际上,除了使用apt-get安装系统库等之外,您根本不需要使用sudo)。 - Chris
2
不要更改Ubuntu下的系统Python,因为太多的Ubuntu机制是基于Python的,否则会损坏系统。不要运行sudo make install命令,请从个人构建目录中运行您的自定义解释器。 - msw
1个回答

3
以下是在Ubuntu上编译Python调试模式的一些输入:
  1. Python网站下载所需版本。
  2. 使用tar -xf解压缩并进入新目录。

    例如:
    tar -xf Python2.7.3.tgz cd Python-2.7.3

  3. 使用./configure --with-pydebug为Python安装程序配置调试模式。它将创建一个Makefile文件,您只需运行它即可。
  4. 通过运行make install命令来编译源代码以创建新的Python解释器。

创建新的解释器时,您的系统Python将保持清洁。

如果您使用--prefix=/home/username/workspace/project/python/参数进行编译,则可以使用以下命令运行脚本:

/home/username/workspace/project/python/bin/python script.py

或者,您也可以在脚本开头添加shebang行#!/home/username/workspace/project/python/bin/python,为其赋予执行权限(sudo chmod 764 script.py),然后通过键入./script.py更轻松地使用新的Python解释器运行它。

注意:您可能需要查看Python的文档以获取更多配置/编译标志(如--prefix/-j,感谢Chris提供链接)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接