【问题标题】:Debug memory leak of php extention so with valgrind用valgrind调试php扩展的内存泄漏
【发布时间】:2012-09-06 04:03:24
【问题描述】:

有很多“?”在调试php扩展的内存泄漏时的日志中,因此使用valgrind。建议程序应避免在共享对象上调用dlclose。 我怎样才能做到这一点?难道说只能通过修改php的源码来实现吗?

【问题讨论】:

    标签: php debugging memory-leaks valgrind shared-libraries


    【解决方案1】:

    您需要为您的 php 构建安装调试符号...许多打包系统使调试包与发布包分开提供。包(如果可用)通常使用约定 php-debug/php-dbg/php53-dbg/php53-debug 命名。

    如果它不可用,那么您需要自己编译一个启用调试的 PHP 副本,这样做并且不干扰您当前的安装,通常将 --prefix=/my/private/folder 添加到配置选项。要启用调试添加--enable-debug,然后您需要重新编译php扩展(我假设它来自pecl,如果它有泄漏)从make clean开始,然后是/my/private/folder/bin/phpize。

    祝你好运:)

    【讨论】:

    • :我知道这会有所帮助。但是,我想知道是否有更好的选择。
    • 那个?当存在调试符号时,将替换为有用的信息。然后你就会知道发生了什么,在哪个文件、函数和行中,使用 gdb 和断点,你一定会找到错误。您可能会尝试的另一件事是要求扩展作者检查您的 PHP 版本是否仍在维护项目...
    猜你喜欢
    • 2014-03-10
    • 2013-06-24
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2020-03-31
    • 2016-03-15
    • 2014-04-09
    • 1970-01-01
    相关资源
    最近更新 更多