如何解决OpenEdge Progress-4GL 开发:如何从错误消息中了解我正在运行的程序?
如之前的问题所述,我对 Progress-4GL 开发还很陌生。
我刚刚创建了一个 windows (*.w file)
,以及一个基于包含文件 (*.p file)
的过程文件 (*.i file)
。
我做错了什么,我收到一条错误消息,复制粘贴显示以下内容:
---------------------------
Fout
---------------------------
** Begin positie voor SUBSTRING,OVERLAY,enz. moet 1 of groter zijn. (82)
---------------------------
OK
---------------------------
如您所见,这是错误 82 的荷兰语翻译:
** Starting position for SUBSTRING,etc. must be 1 or greater. (82)
The SUBSTRING,etc,functions require that the start position (second argument) be greater than or equal to 1.
P
我想知道哪个过程/函数正在启动此错误消息。我正在使用 AppBuilder 版本 11.6 和相应的过程编辑器,因此调试的可能性非常有限。我在想的一件事是转储 Windows 进程,以确定调用堆栈,但我不确定如何执行此操作。我还尝试使用 Process Explorer 并检查“procwin32.exe”进程内线程的各个堆栈的堆栈,但我不确定如何继续。
顺便说一句,我经常在我的代码中添加消息框,如下所示(只是一个例子):
MESSAGE "begin procedure combobox-value-changed" VIEW-AS ALERT-BOX.
如您所见,过程名称是硬编码的,而在其他编程语言(如 C++)中,过程/函数名称可以如下所示:
OUTPUT("begin procedure %s",__FUNCTION__);
在 __FUNCTION__
旁边,C++ 还知道 __FILE__
(用于文件名)和 __LINE__
(用于行号)。
Progress 4GL 中是否也存在此类预定义值,最好是 11.6 或之前版本?
解决方法
由于 ABL 代码未编译为 Windows 字节码,因此 Windows 调试器不会真正有用。
您应该首先将 -debugalert 启动参数添加到 prowin/prowin32.exe。或者添加这个
ASSIGN SESSION:DEBUG-ALERT = TRUE .
这将为所有(错误)消息添加一个帮助按钮,这将打开一个带有 ABL 堆栈跟踪的对话框。
当您使用包含文件时,请注意堆栈跟踪中引用的行号基于调试列表,而不是实际的源代码。所以执行
COMPILE myfile.w DEBUG-LIST c:\temp\myfile.debuglist .
接收带有正确行号的调试列表文件。
您知道可用于 AVM 的可视化调试器吗? https://docs.progress.com/de-DE/bundle/openedge-abl-troubleshoot-applications-117/page/Introduction.html
%DLC%\bin\proDebugger.bat
或 AppBuilder 中的编译 -> 调试菜单。
它看起来有点古色古香,但通常很实用。
需要在 proenv 中以管理员身份启用调试:
prodebugenable -enable-all
当然,当您切换到 Progress Developer Studio 作为 IDE 时,草会更绿。
,关于您问题的第二部分。请参阅 PROGRAM-NAME 函数。
message
program-name(1) skip
program-name(2)
.
另外参见 {} preprocessor name reference。
message 'file: {&file-name} line: {&line-number}'.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。