调试PHP核心文件 - 当前上下文中没有符号“executor_globals”

时间:2011-03-03 00:19:38

标签: php apache gdb

我正在尝试从PHP生成的核心文件中获取回溯。

我正在关注this guide,当我尝试使用以下方法打印函数名称时

print (char *)(executor_globals.function_state_ptr->function)->common.function_name

我收到错误:

No symbol "executor_globals" in current context.

我正在运行GDB:

gdb /usr/sbin/apache2 /mnt/cores/core.apache2.8315

有趣的是,在Ubuntu上使用libapache2-mod-php5包时我没有这个问题。我不得不编译自己的PHP模块来修复一个不同的问题,而这个编译过的模块给我带来了麻烦。

谷歌搜索“无符号executor_globals”实际上返回0结果,我觉得很奇怪。我是认真对待这个问题的唯一人吗?

1 个答案:

答案 0 :(得分:0)

我最终通过针对非线程Apache编译PHP来解决这个问题,有效地禁用了PHP模块中的线程安全性,这正是我想要的。

更具体地说,我在configure args中指定的apxs2二进制文件来自Ubuntu apache2-threaded-dev包,而在服务器上运行的Apache是​​prefork,而不是线程。所以我只需要安装apache2-prefork-dev软件包然后重新编译,我很高兴。