【发布时间】:2011-04-07 18:20:24
【问题描述】:
我正在尝试将 Perl 调试器附加到 Apache 和 mod_perl。我们的 环境非常复杂(很多额外的东西(例如催化剂) 用 Apache 配置)和配置它的工程师没有 与公司相处的时间更长。我已按照 Apache 上的说明进行操作 网站,设置“PerlFixupHandler Apache::DB”等。 但到目前为止,我得到的只是调试器 after 该页面已交付。我猜我得到了突破 调度进程,而不是工作进程。我正在运行 prefork MPM 阿帕奇的版本。调试说明说在传递 -X 参数时 启动 httpd。但是我正在运行的 httpd 不接受 -X 参数。 我假设 -X 参数实际上会导致某些版本的 httpd 不分叉?
感谢所有指导。
$ ./httpd -v
Server version: Apache/2.2.17 (Unix)
Server built: Nov 16 2010 20:13:24
-X isn't listed when I do httpd -?
Usage: ./httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]
【问题讨论】:
-
你有没有试过在启动apache之前设置断点? (即
$DB::single=1)或者,尝试转储 \%DB:: 符号表以查看是否在生成响应的进程部分中加载了调试器? -
根据您的需要,您还可以在代码中添加
print eval, "\n" while <>;行,这将使您在每次运行时都进入一个基本的repl。键入您需要的命令,然后按 CTRL-D 结束 while 循环,代码将一直运行,直到下一次遇到“断点”。根据您放置它们的位置,您可能需要用{local $_; ... }包装上面的内容以保护$_变量。 -
你说
-X不被接受,我不相信。过去 10 年或更长时间发布的每个 Apache httpd 都具有该功能。你一定是做错了什么。 -
编辑了主帖...