我正在阅读Informix 4GL示例。 Ex4给出了分段错误,所以我试图使用调试器来找出程序失败的地方,但是调试器没有工作。
从r4gl
开始,我可以编译表单和模块。但是当我调试它时会显示一个空白屏幕
“按Return键继续”。
从命令行fgldb
返回以下错误:
fgldb: symbol lookup error: fgldb: undefined symbol: kw__numkws
数据库启动并运行,我可以isql
进入并运行查询。
系统详情:
我在网上搜索过,但没有找到任何帮助。知道什么是错的吗?
更新1:
再次感谢您的帮助。我将尝试安装在一个单独的目录中,让你知道。这可能是金发女郎,但如何安装在不同的目录中。如果我试图收到错误:
“INFORMIXDIR和工作目录不匹配。” “INFORMIXDIR = / usr / informix” “当前工作目录= / usr / informix / i4gl”
我可以编辑$ INFORMIXDIR以匹配我要安装的位置吗?
非常感谢,
尼尔
更新2:
好的,所以我把它们都安装在/ usr / informix / i4gl。
将变量设置为指向该目录,不确定究竟需要哪些变量,因为我仍然会收到错误。
/ usr / informix / i4gl包含目录msg / en_us / 0333,但该文件不存在,而/ usr / informix / msg / en_us / 0333包含fgldb.iem文件。
亲切的问候
尼尔
更新3:
好吧,我的金发女郎现在变得疯狂,但在安装到/ usr / informix / i4gl之后,我从未改变过$ INFORMIXDIR变量。我做了这个,然后停下来启动了数据库。
现在,在尝试编译演示f_custkey.per(使用stores_demo db)之前,我得到错误-329和-2810,这与未找到的数据库有关。
我不确定这是你在上次发言中所说的。我不确定是否将这两个分成单独的目录已经解决了我的调试器问题,因为现在我无法编译任何东西,但我觉得我越来越近了。
亲切的问候,
尼尔
更新4 - 决赛!
好的,现在它正在运作。
再次运行dbaccessdemo7命令重新创建数据库,并且一切都在点头。
编译和调试ex4现在可以正常工作。
非常感谢您提供的所有信息。我一边学习。
亲切的问候
尼尔
答案 0 :(得分:3)
kw_numkws问题在7.50.UC6之后修复。所以下一个可用的fixpack将有修复。 在此期间,IBM技术支持部门发布了一份“技术警报”,建议客户将I4GL(和ISQL)安装在一个单独的目录中 - 由Jonathan Leffler建议的#2选项。
答案 1 :(得分:2)
你遇到的核心转储/崩溃是我们在本周早些时候发现的一个不幸的错误。 ESQL / C代码是固定的(截至今天),但固定版本尚不可用,并且暂时不会(读到“最早在感恩节之后”)。 I4GL和ISQL代码仍然需要修复(一些独立但密切相关的问题)。
发生的事情是CSDK中的结构改变了大小。 I4GL将使用一个大小编译代码,CSDK库期望另一个大小;差异大约是4个字节。 这导致难以跟踪内存覆盖。
kw__numkws
问题是我认为在7.50.UC6中已修复的较旧问题。我将不得不检查该版本是否确实得到了修复,如果是,那么您是如何看到该错误的。
有几个短期选项可以帮助你进入固定合奏:
在服务器目录中重新安装I4GL(和ISQL)。我没有证明这会起作用。这个概念是为了确保I4GL使用它构建的CSDK库,而不是更新的3.70.xC6版本。
将I4GL(和ISQL)重新安装在一个单独的目录中(可能是/opt/IBM/i4gl
)。在此目录中有一个合适的sqlhosts
文件;它可能是IDS目录中的符号链接。将I4GL程序指向此备用目录,正确设置LD_LIBRARY_PATH。
选项2确保I4GL使用'正确'的CSDK。选项1可能会达到相同的结果,但我还没有准备好保证它。因此,我建议选择2。
如果你的I4GL代码需要运行DB-Access或服务器$INFORMIXDIR
中的其他程序,有办法解决这个问题 - 请在评论中说明,我会解释,但我不想如果没有必要,你会感到困惑。 (这不是很难,但它也不是完全无足轻重的。)
答案 2 :(得分:1)
选项3.是发现CSDK用于创建4GL工具并安装THAT而不是当前工具。在4GL 7.50FC6的情况下,它是CSDK 3.70FC4。
我在拆分引擎和工具时遇到了问题。到目前为止,这似乎有效。