如何调试有效且非随机的东西


How to debug something that works and not at random?

我正在使用Net_NNTP ->post()函数。这会将消息发布到 NNTP 服务器。但是,有时(30-50% 的情况)消息每行的最后 1 或 2 个字符会被截断。有时这很好用。

我真的找不到任何方法来复制它; 这与消息中插入的文本无关等等,与服务器负载等无关......我根本不明白。

您认为我应该如何调试它?


下面是一些示例代码,其作用与 PHP 的类相同。

$sh = fsockopen('nntp-server', 119);
fwrite($sh, "POST'r'n");
fwrite($sh, $article);
fwrite($sh, "'r'n.'r'n");

$article总是相同的。我连接到的服务器集群知道是一个受人尊敬的ISP的可靠服务器,我认为这不是问题!

这对我来说真的毫无意义。

但是(30-50% 的情况)消息每行的最后 1 或 2 个字符被截断

如果您缺少整行最后一行,则可以说是无意的软件错误。但如果你是每行丢失几个字节,这很可能是某些软件的故意行为。就像强制自动换行或行中的字符突然被错误编码时(如 utf)。也许此 NNTP 服务器设置了每个 lime 的字节数限制。

无论哪种方式,我都怀疑请求数据包在通过和失败时是否完全相同。

如果它依赖于输入(即某些输入总是失败),只需制作一个提供该输入的测试脚本,并使用 xdebug 等逐步执行代码,随时检查变量。