我们有 docker 容器,其中有许多 python 服务。我们想检查一些 python 进程的内存泄漏。在我们的 docker 文件中设置 ENV 变量 PYTHONMALLOC=malloc 后,我们尝试将 valgrind 附加到我们的 python 进程。但是我们无法获得正确的堆栈跟踪。
使用的命令: /usr/bin/valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --trace-children=yes --track-origins=yes
知道在 docker 容器中使用 valgrind 和 python 进程需要做什么吗?
你需要一个带有 debuginfo 的 python 解释器。这可能在您的操作系统上作为单独的软件包提供。否则你将需要构建一个调试版本的 Python。
如果你这样做,那么 Valgrind 将在 interpreter 中检测错误,而不是在你的 Python 脚本中。