1

尝试运行生成报告的脚本时出现上述错误。这是一个预先存在的脚本,之前已经成功运行过很多次。研究告诉我,这与堆栈大小有关?我在 WRQ Reflections 中运行 10.2B02。谁能告诉我这句话的含义以及我如何查找我的 -S 的值。谢谢,

保罗

4

1 回答 1

0

-s 是客户端启动参数。您提到“反思”,因此您可能正在使用字符终端会话。-s 参数位于用于启动 Progress 的命令行上(可能在脚本中)。如果命令行上有一个 -pf somefile.pf ,那么它就在那个“参数文件”里面。如果未指定,则默认值为 40。最大值受可用内存的限制,但将其设置为数百甚至数千并非闻所未闻。

您还可以通过向会话正在运行的 _progres 进程发送 SIGUSR1 来获取启动值。即 kill -USR1 这将(安全地)创建一个“protrace”。包含启动参数和 4gl 堆栈跟踪的文件。该文件将出现在当前目录、主目录或临时文件目录中(我忘记了,只是查找 protrace*)。

此错误通常意味着您的代码正在操作一个太大的字段。(就像错误所说的那样。)这可能有很多原因。

一种常见的可能性是循环中的字符串连接。

或者你可能会调用很多子过程并传递参数。

如果代码中“没有任何变化”,那么它可能只是意味着某些数据结构随着时间的推移稍微变大了,并且只要能解决问题,增加 -s 真的没什么大不了的。

如果您一直不得不增加它,那么您更有可能遇到某种编码问题。也许你正在通过值传递应该通过引用传递的东西,或者你可能已经逃跑了递归。或者是其他东西。您需要提供更多细节才能确定。

您也有可能(但不太可能)有一个损坏的数据记录,其中似乎有一个太大的字段。您可以运行“proutil dbName -C dbanalys”作为初始步骤,看看是否属实。

部分错误消息是非标准的——我不确定它来自哪个日志文件或它是如何到达那里的(应用程序可以编写自己的消息),但它似乎与尝试发送有关一封电邮。所以我会怀疑收件人列表太长或电子邮​​件正文太大。

于 2013-10-20T12:16:08.850 回答