2

我正在阅读 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 中。

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

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

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

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

亲切的问候

尼尔

更新 3:

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

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

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

亲切的问候,

尼尔

更新 4 - 决赛!

好的,所以它现在正在工作。

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

编译和调试 ex4 现在可以工作了。

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

亲切的问候

尼尔

4

3 回答 3

3

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

于 2012-11-17T02:07:16.373 回答
2

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

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

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

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

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

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

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

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

于 2012-11-17T01:55:18.447 回答
1

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

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

于 2013-03-08T20:02:17.630 回答