如何理解 client.mon 文件中提到的 Int-Proc 条目?
How to understand a Int-Proc entry, mentioned in client.mon file?
我在尝试在 appBuilder 中打开 *.w
文件时遇到了一系列错误。我设法找到了该文件的先前版本,可以正常打开,并且我发现两个文件之间存在以下差异:
Per procedure segment information
---------------------------------
File Segment #Segments Total-Size
---- ------- --------- ----------
Good_version.w
...
Int-Proc: 19 1 26232
...
Bad_version.w
...
Int-Proc: 19 1 32712
如您所见,“Int-Proc”编号 19 似乎是一个,超过了段大小(超过 32K),因此是导致问题的原因。
现在很明显的问题是:我怎么知道“Int-Proc”数字 19 的含义?我的代码中有一些过程,但数量与“Int-Proc”的总数不对应(非常天真:我在 client.mon 中有 38 个“Int-Proc”条目,但只有 21 End procedure.
我的源代码中的条目)。
编辑
在超过 32K 限制的情况下采取的措施是将增长过大的过程拆分为更小的部分。不过在Bad_version.w
和Good_version.w
之间,好像总共展开了5个程序,想知道我需要拆分哪一个。
免责声明:我从未使用过 AppBuilder。
client.mon 用于 r 代码统计,所以我认为应该有一个 .r 而不是 .w。 AppBuilder 对内部过程有 32000 字节(= 字符变量的最大大小)限制。 32000 行也将破坏 AppBuilder 视图,但编译为 0 字节(左右)。
我/认为/ AppBuilder 会在选择太大的过程时抱怨内部过程太大。如果不是,您将需要在程序和结束程序之间获取 .w 块的 /text/ 内容大小,然后您知道哪个是您的问题。
类似于:
def var lcw as longchar no-undo.
def var iprocs as integer no-undo.
def var lcproc as longchar no-undo.
def var cc as character no-undo.
def var ic as integer no-undo.
cc = chr(1).
copy-lob from file "my.w" to lcw.
assign
lcw = replace( lcw, 'procedure ', cc )
lcw = replace( lcw, 'end procedure', cc )
iprocs = num-entries( lcw, cc )
.
do ic = 1 to iprocs:
lcproc = entry( ic, lcw, cc ).
if length( lcproc ) > 31000 then
message substring( lcproc, 1, 100 ) view-as alert-box.
end.
对 AppBuilder 真正抱怨的方式很感兴趣:
- 启动了 AppBuilder
- 创建了一个 Smart Window
- 打开了第一个程序部分(这是一个触发器)
- 添加了//一些评论
- 保存了 .w
- 用 Notepad++ 打开 .w 并炸毁 // 一些注释大于 32000 字节
用 AppBuilder 打开 .w,错误不断。
退出。
-> 将 -debugalert 添加到我的快捷方式。
在第一个错误启动调试器。
调试器尝试启动,但没有启动(记住隐藏程序post)
-> 将 -zn 添加到我的快捷方式。
在第一个错误启动调试器。
开始。虽然我没有提取源代码,所以看不到任何源代码,但我可以看到并查看所有变量和缓冲区。
因为我炸了一个扳机,报错_trg。查看 _trg:
并且:
我在尝试在 appBuilder 中打开 *.w
文件时遇到了一系列错误。我设法找到了该文件的先前版本,可以正常打开,并且我发现两个文件之间存在以下差异:
Per procedure segment information
---------------------------------
File Segment #Segments Total-Size
---- ------- --------- ----------
Good_version.w
...
Int-Proc: 19 1 26232
...
Bad_version.w
...
Int-Proc: 19 1 32712
如您所见,“Int-Proc”编号 19 似乎是一个,超过了段大小(超过 32K),因此是导致问题的原因。
现在很明显的问题是:我怎么知道“Int-Proc”数字 19 的含义?我的代码中有一些过程,但数量与“Int-Proc”的总数不对应(非常天真:我在 client.mon 中有 38 个“Int-Proc”条目,但只有 21 End procedure.
我的源代码中的条目)。
编辑
在超过 32K 限制的情况下采取的措施是将增长过大的过程拆分为更小的部分。不过在Bad_version.w
和Good_version.w
之间,好像总共展开了5个程序,想知道我需要拆分哪一个。
免责声明:我从未使用过 AppBuilder。
client.mon 用于 r 代码统计,所以我认为应该有一个 .r 而不是 .w。 AppBuilder 对内部过程有 32000 字节(= 字符变量的最大大小)限制。 32000 行也将破坏 AppBuilder 视图,但编译为 0 字节(左右)。
我/认为/ AppBuilder 会在选择太大的过程时抱怨内部过程太大。如果不是,您将需要在程序和结束程序之间获取 .w 块的 /text/ 内容大小,然后您知道哪个是您的问题。
类似于:
def var lcw as longchar no-undo.
def var iprocs as integer no-undo.
def var lcproc as longchar no-undo.
def var cc as character no-undo.
def var ic as integer no-undo.
cc = chr(1).
copy-lob from file "my.w" to lcw.
assign
lcw = replace( lcw, 'procedure ', cc )
lcw = replace( lcw, 'end procedure', cc )
iprocs = num-entries( lcw, cc )
.
do ic = 1 to iprocs:
lcproc = entry( ic, lcw, cc ).
if length( lcproc ) > 31000 then
message substring( lcproc, 1, 100 ) view-as alert-box.
end.
对 AppBuilder 真正抱怨的方式很感兴趣:
- 启动了 AppBuilder
- 创建了一个 Smart Window
- 打开了第一个程序部分(这是一个触发器)
- 添加了//一些评论
- 保存了 .w
- 用 Notepad++ 打开 .w 并炸毁 // 一些注释大于 32000 字节
用 AppBuilder 打开 .w,错误不断。 退出。
-> 将 -debugalert 添加到我的快捷方式。 在第一个错误启动调试器。 调试器尝试启动,但没有启动(记住隐藏程序post)
-> 将 -zn 添加到我的快捷方式。 在第一个错误启动调试器。 开始。虽然我没有提取源代码,所以看不到任何源代码,但我可以看到并查看所有变量和缓冲区。
因为我炸了一个扳机,报错_trg。查看 _trg:
并且: