无法运行 Informix 4GL 交互式调试器

Posted

技术标签:

【中文标题】无法运行 Informix 4GL 交互式调试器【英文标题】:Can't run Informix 4GL Interactive Debugger 【发布时间】:2012-11-16 07:01:36 【问题描述】:

我正在阅读 Informix 4GL By Example。 Ex4 给出了分段错误,因此我尝试使用调试器找出程序失败的位置,但调试器无法正常工作。

r4gl 中,我可以编译表单和模块。但是当我调试它显示一个空白屏幕 “按回车键继续”。

从命令行fgldb 返回以下错误:

fgldb: symbol lookup error: fgldb: undefined symbol: kw__numkws

数据库已启动并运行,我可以isql 进入并运行查询。

系统详情:

OpenSuSE 12.1 32 位 Informix RDS 7.50 UC6 Informix SQL DEV 7.50 UC6 Informix 增长版 11.70 UC5 Informix 交互式调试器 7.50 UC6

我在网上搜索过,但没有找到任何有用的东西。知道有什么问题吗?

更新 1:

再次感谢您的帮助。我将尝试安装在单独的目录中并让您知道。这可能是金发女郎,但我如何安装在不同的目录中。如果我尝试得到错误:

“INFORMIXDIR 和工作目录不匹配。” “INFORMIXDIR = /usr/informix” "当前工作目录 = /usr/informix/i4gl"

我可以编辑 $INFORMIXDIR 以匹配我要安装的位置吗?

非常感谢,

尼尔

更新 2:

好的,所以我将它们都安装在 /usr/informix/i4gl 中。

将变量设置为指向该目录,但不确定需要哪些变量,因为我仍然收到错误。

    fgldb:-16326:无法打开文件“fgldb.iem”

/usr/informix/i4gl 确实包含目录 msg/en_us/0333,但该文件不存在,而 /usr/informix/msg/en_us/0333 确实包含 fgldb.iem 文件。

    isql -> 查询语言:说 SELECT DATABASE,但没有或显示供我选择。

亲切的问候

尼尔

更新 3:

好吧,我的金发妈妈们现在都快疯了,但是在安装到 /usr/informix/i4gl 之后,我再也没有改回 $INFORMIXDIR 变量。我这样做了,然后停止并启动了数据库。

现在,当尝试编译演示 f_custkey.per(像以前一样使用 stores_demo db)表单时,我收到错误 -329 和 -2810,这与找不到数据库有关。

我不确定这是否是您在上一次声明中所说的。我不确定将这两个拆分到单独的目录是否解决了我的调试器问题,因为现在我无法编译任何东西,但我感觉我快接近了。

亲切的问候,

尼尔

更新 4 - 决赛!

好的,现在可以使用了。

再次运行 dbaccessdemo7 命令重新创建数据库,一切顺利。

现在可以编译和调试 ex4。

非常感谢您提供的所有信息。边走边学。

亲切的问候

尼尔

【问题讨论】:

感谢您提供系统和软件信息,这对您有很大帮助! 【参考方案1】:

kw_numkws 问题在 7.50.UC6 后得到修复。所以下一个可用的修复包将有修复。 在此期间,IBM 技术支持发布了“技术警报”,建议客户将 I4GL(和 ISQL)安装在单独的目录中 - 上面 Jonathan Leffler 建议的选项 #2。

【讨论】:

【参考方案2】:

您遇到的核心转储/崩溃是我们本周早些时候发现的一个不幸的错误。 ESQL/C 代码是固定的(截至今天),但固定版本尚不可用,并且暂时不会可用(阅读“最早直到感恩节之后”)。 I4GL 和 ISQL 代码仍然需要修复(一些独立但密切相关的问题)。

发生的情况是 CSDK 中的结构改变了大小。 I4GL 将使用一种大小编译代码,而 CSDK 库需要另一种大小;差异大约是 4 个字节。 这导致难以跟踪内存覆盖。

kw__numkws 问题是一个较老的问题,我认为在 7.50.UC6 中已修复。我将不得不检查该版本是否确实得到了修复,如果是的话,你是如何看到这个错误的。

有几个短期选项可以让您继续前进,直到有固定的合奏可用:

    在服务器目录中重新安装 I4GL(和 ISQL)。我还没有证明这会奏效。这个概念是为了确保 I4GL 使用它构建时使用的 CSDK 库,而不是更新的 3.70.xC6 版本。

    在单独的目录(可能是/opt/IBM/i4gl)中重新安装 I4GL(和 ISQL)。在这个目录下有一个合适的sqlhosts文件;它可能是 IDS 目录中的符号链接。将 I4GL 程序指向此替代目录,适当设置 LD_LIBRARY_PATH。

选项 2 确保 I4GL 使用的是“正确的”CSDK。选项 1 可能会达到相同的结果,但我不准备保证。因此,我建议选项 2。

如果您的 I4GL 代码需要运行 DB-Access 或在服务器 $INFORMIXDIR 中找到的其他程序,有一些方法可以解决这个问题 - 请在评论中指出,我会解释,但我不想让您感到困惑如果没有必要。 (这不是非常难,但也不是完全微不足道的。)

【讨论】:

【参考方案3】:

选项 3. 是发现用于创建 4GL 工具的 CSDK 并安装 THAT 而不是当前的。在 4GL 7.50FC6 的情况下,它是 CSDK 3.70FC4。

我在拆分引擎和工具时遇到了问题。到目前为止,这似乎有效。

【讨论】:

以上是关于无法运行 Informix 4GL 交互式调试器的主要内容,如果未能解决你的问题,请参考以下文章

Informix 4GL 向屏幕报告 - 反向

在 Informix 4GL 程序中验证 URL

下午在 Informix 4GL 中显示

如何在 Informix 4gl 中引用 TEXT 类型?

使用 prepare 语句在 informix 4gl 中创建临时表

在 INFORMIX 4GL 的报告中对“ORDER BY”使用“IF 语句”