我正在使用一个相当复杂的结构,其中包含多个 ssi-includes、set- 和 echo 命令。
第一个文档写了很多 set 命令,包含另一个文档,然后又包含第三个文档。在最后一个包含的文档中,使用 echo 命令打印变量值。
我注意到,随着变量数量的增加,发生分段错误的可能性也会增加。
有人遇到过类似的事情吗?我该如何调试这样的问题?
我正在使用 IBM_HTTP_Server/2.0.47.1-PK65782 Apache/2.0.47
答案1
一般来说,Apache 不应该出现分段错误。我会使用测试服务器并打开所有日志记录,同时使用 strace 查看进程以查看分段错误发生的位置。
如果您确定它是 mod_include,请确保它是使用与您正在运行的 apache 相同版本的编译的 - 如果它为不同的版本编译,则可以解释段错误。
答案2
如果出现段错误,您应该能够检索核心转储,这将有助于了解代码级别发生了什么。查阅操作系统文档以了解如何收集转储。获得转储后,您可以使用您最喜欢的调试器检查崩溃时进程的完整内部状态。
Strace 对分段错误没有太大帮助,因为它只会告诉你用户空间和内核之间发生了什么,而分段错误通常表明纯粹是用户空间问题。如果你运行的是 Linux,valgrind 和 ltrace 更适合这种情况。但首先,从核心中获取回溯。