2009-08-10 110 views
2

在python中,可以使用trace模块跟踪由命令行脚本执行的所有语句。在bash中,你可以使用set -x。我们有一个PHP脚本,我们从命令行运行,就像普通的bash/python/perl/etc脚本一样。没有任何web-y正在发生。PHP - 打印在PHP命令行脚本中执行的所有语句?

无论如何要得到正在执行的所有代码行的跟踪?

回答

1

不是在纯PHP中,不是 - 据我所知。

但是你可以使用调试器;一个很好的方式做到这一点是

。这都是免费,顺便说一句。

有了这些,你可以一步一步做,设置断点,观察变量的内容,查看堆栈跟踪,...它可以工作在Web和CLI脚本;-)

当然,这意味着你正在执行你的脚本的机器上运行Eclipse ...但是,如果你正在你的开发机器上执行它,你可能有一个图形用户界面和所有的,所以它应该很好...
(我知道对于Web应用程序,您可以让Eclipse运行在不同于使用PHP webserver的机器上的机器上 - 不知道是否可以在CLI中使用)


作为旁注:也许你可以将Xdebug与基于CLI的调试器集成;请参阅前面链接到的页面以获取支持的工具列表。

+0

我发现使用xdebug的最好方法之一就是分析它吐出的跟踪文件。你可以在它们上运行差异,用perl解析它们等。如果你有两个类似的用例,一个用起作用,另一个不起作用,diff可以用来显示他们开始分歧的地方。我发现'vimdiff'(这是一个无处不在的'vim'编辑器的内置操作模式)在这方面非常有用,它能够处理非常大的文件(例如,一个模块化的Drupal安装)而不需要缓冲。 – intuited 2010-06-27 00:11:39

+0

另外它很可能在纯CLI模式下使用xdebug。您可以将其配置为对从命令行调用的php代码执行跟踪,实际上您可以将vim挂钩为调试器。我想这不是纯粹的cli,因为vim在curses中运行。无论如何,有关于在这里使用vim作为PHP调试器的信息:http://tech.blog.box.net/2007/06/20/how-to-debug-php-with-vim-and-xdebug-on-linux /#comment-39681 – intuited 2010-06-27 00:19:43

+0

Err哎呀,意识到你正在谈论使用cli进行远程调试。我没有试图做到这一点,但我认为可以远程调试它,但是你必须ssh才能真正运行该命令。 – intuited 2010-06-27 00:23:18

-1

我有点瞎了,但我想你可以做的一种方式是在自定义函数中写入所有相关的代码,并致电debug_backtrace()debug_print_backtrace也可能有用。

我希望它有帮助。

+0

是的,这是一种选择,但我一直在寻找比“大量印刷品国家”更高层次的东西, – Rory 2009-08-10 13:11:37

2

有一个PECL扩展apd,它将生成一个跟踪文件。