将 XDebug 与 Aptana 和 fwrite 结合使用时无法显示多个输出行

发布于 2024-09-14 06:27:17 字数 848 浏览 12 评论 0原文

当在调试模式下使用 Aptana 和 PHP 5.2.3(使用 PHP 5.2 VC6 的线程安全 XDebug 2.1.0)来运行简单的多行 hello world 脚本时,我在 Aptana“控制台”选项卡上出现一些不稳定的行为。

我有一个 hello_world.php 脚本,其中包含以下内容:

<?php
$stdout = fopen('php://stdout', 'w');
fwrite($stdout, 'Hello world!');
fwrite($stdout, 'Hello world!2');
fwrite($stdout, 'Hello world!3');
fclose($stdout);
?>

Aptana 中的 PHP 调试配置使用 c:\wamp\php 文件夹中的 php.exe,在 CLI 模式下使用 XDebug 作为调试器。

如果我启动调试会话并让我的代码直接执行,我就会得到预期的输出(就像从命令提示符运行它一样)。

但是,如果我单步执行代码,我只能在 Aptana 的“控制台”部分看到第一行(“Hello world!”)。事实上,我什至可以避免看到第一个“Hello world!”。快速从 fopen() 行到第一条 fwrite() 行。如果我在单步执行 fopen() 后暂停大约 3 到 5 秒,然后运行 ​​fwrite,我将得到第一个“Hello world!”。

不用说,这完全令人困惑。如果您想了解有关我的配置的更多信息,请告诉我,我很乐意提供!

干杯! Duncan

(我实际上正在尝试调试一个 CakePHP shell 脚本,该脚本使用 fwrite 到 stdout 而不是 echo...但我想首先解决这个问题!)

When using Aptana with PHP 5.2.3 in debug mode (using thread safe XDebug 2.1.0 for PHP 5.2 VC6) to run a simple multi-line hello world script I get some erratic behaviour on the Aptana 'Console' tab.

I've a hello_world.php script that contains the following:

<?php
$stdout = fopen('php://stdout', 'w');
fwrite($stdout, 'Hello world!');
fwrite($stdout, 'Hello world!2');
fwrite($stdout, 'Hello world!3');
fclose($stdout);
?>

My PHP debug configuration in Aptana is using php.exe from the c:\wamp\php folder, in CLI mode with XDebug as the debugger.

If I start a debug session and let my code execute straight through, I get the expected output (as I do if I run this from a command prompt).

If I step through the code however, I only see the first line ("Hello world!") in the "Console" section of Aptana. In fact, I can avoid even seeing the first "Hello world!" by stepping quickly from the fopen() line to the first fwrite() line. If I pause for perhaps 3 to 5 seconds after stepping through the fopen(), and then run the fwrite, I will get the first "Hello world!".

Needless to say, this is completely baffling. Please let me know if you'd like more information about my configuration, and I'll be glad to provide it!

Cheers! Duncan

(I'm actually attempting to debug a CakePHP shell script that uses fwrite to stdout instead of echo... but I want to solve this problem first!)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情何以堪。 2024-09-21 06:27:17

我发现以下内容确实有效(感谢第一条评论):

$fp = fopen('php://output', 'w'); // Note, not: php://stdout
fwrite($fp, 'Hello world!');
flush();
fwrite($fp, 'Hello world!2');
flush();
fwrite($fp, 'Hello world!3');
flush();
fclose($fp);

?>

这仍然没有出现在 Aptana (Eclipse) 中的“控制台”选项卡中,只是出现在“调试输出”选项卡中,但我至少有输出。该脚本现在也接受参数,而之前它没有这样做。

I've found that the following does work (thanks to the first comment):

$fp = fopen('php://output', 'w'); // Note, not: php://stdout
fwrite($fp, 'Hello world!');
flush();
fwrite($fp, 'Hello world!2');
flush();
fwrite($fp, 'Hello world!3');
flush();
fclose($fp);

?>

This still isn't appearing the 'Console' tab in Aptana (Eclipse), just in the 'Debug Output' tab, but I do at least have output. The script is also accepting arguments now, which it wasn't doing before.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文