微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何理解 client.mon 文件中提到的 Int-Proc 条目?

如何解决如何理解 client.mon 文件中提到的 Int-Proc 条目?

我在尝试在 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.wGood_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
  • 创建了一个智能窗口
  • 打开第一个程序部分(它是一个触发器)
  • 添加了 // 一些评论
  • 保存了 .w
  • 用 Notepad++ 打开 .w 并炸毁 // 一些注释大于 32000 字节

用 AppBuilder 打开 .w,错误无穷。 退出。

-> 在我的快捷方式中添加了 -debugalert。 在第一个错误启动调试器。 调试器尝试启动,但没有启动(记住隐藏程序帖子)

-> 在我的快捷方式中添加了 -zn。 在第一个错误启动调试器。 开始。由于我没有提取源代码,所以我看不到任何源代码,但我可以看到和查看所有变量和缓冲区。

由于我炸毁了触发器,因此错误报告了_trg。查看_trg:

enter image description here

还有:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。