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

Questions about compiling Python in debug mode

我正在使用 Ubuntu 12.04,Python 2.7.3。
我与人合写的 C 扩展中出现分段错误。它似乎来自未正确释放的指针。

然后我使用 valgrind 来查找内存泄漏。根据 answer,我必须在调试模式下编译 Python 以获得 valgrind 友好版本的 Python 并删除其不相关的报告。

如何在调试模式下编译Python

尽管我链接的答案回答了部分问题,但没有提供足够的细节。
事实上,我想了解正在发生的事情,而不仅仅是因为 "who knows? It could work" 在某些地方键入内容。

因此,我想知道:

我也在努力寻找 Yair Daon 评论中提到的问题的答案:

以下是一些尝试在 Ubuntu 上以调试模式编译 Python 的人的一些输入:

  1. python website下载您需要的版本。
  2. 使用tar -xf解压它并转到新目录。

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

  3. 使用 ./configure --with-pydebug 配置调试模式的 python 安装程序。它将创建一个 Makefile,您只需 运行。

  4. 通过 运行 编译 Makefile 来创建新的 python 解释器,使用:make install

当您创建一个新的解释器时,您的系统 Python 将保持干净。

如果您使用 --prefix=/home/username/workspace/project/python/ 编译它,您现在可以 运行 使用新的 Python 解释器使用您的脚本:

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

或者,您也可以在脚本的开头添加 shebang 行 #!/home/username/workspace/project/python/bin/python,赋予它执行权限 (sudo chmod 764 script.py) 并且 运行 使用您的新脚本更容易Python 通过键入 ./script.py.

进行解释

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