【发布时间】:2016-08-10 10:05:09
【问题描述】:
我使用的是 Ubuntu 12.04、Python 2.7.3。
我与人共同编写的C 扩展中出现分段错误。它似乎来自一个没有正确释放的指针。
然后我使用valgrind 来查找内存泄漏。根据那个answer,我必须在调试模式下编译Python以获得valgrind的友好版本Python并摆脱它不相关的报告。
如何在调试模式下编译Python?
即使我链接的答案回答了该问题的一部分,但它并没有为我提供足够的详细信息。
确实,我想了解正在发生的事情,而不仅仅是在某些地方键入内容,因为“谁知道?它可以工作”。
因此,我想知道:
- 要下载什么来编译 Python?
- 在哪里输入
./configure? - 我当前的安装会发生什么?它会影响我的系统吗?
我在很多地方读过 Ubuntu 12.04 上的许多进程 由 Python 管理,我不想搞砸任何事情。
我也在努力寻找 Yair Daon 评论中提到的问题的答案:
-
使用调试完成后是否需要重新编译
Python编译?- 如果是,如何将
Python编译回其标准模式?
- 如果是,如何将
【问题讨论】:
-
问题“如何在调试模式下编译 Python”在您链接到的问题的已接受答案中给出。如果该答案不足以满足您的需求,则必须更详细地解释它们。
-
只写了一个命令。我阅读了答案,但我不知道要下载什么,也不知道在哪里键入该命令,也不知道我以前安装的 Python 会发生什么(我不想弄乱我当前的 Python 安装......)。这就是为什么我在这里要求一个完整的解释。
-
感谢您更新您的问题。 IMO 最好的办法是查看官方developer's guide。您可能会在“快速入门”标题下和setup page 上找到您需要的大部分内容。如果你在你的主目录中构建一个新的 Python,它不应该与你的系统 Python 冲突。只要确保不要运行
sudo make install或类似的(真的,除了使用apt-get安装系统库等,你根本不需要sudo)。 -
不要不要在 Ubuntu 下改变系统 Python,你会搞砸你的系统,因为太多的 Ubuntu 机制是基于 Python 的。不要做
sudo make install,从您的个人构建目录运行您的自定义解释器。
标签: python debugging memory-leaks ubuntu-12.04 valgrind