2

Informix 4GL By Example を読んでいます。Ex4 でセグメンテーション違反が発生しているため、デバッガーを使用してプログラムが失敗している場所を見つけようとしていますが、デバッガーが機能していません。

内からr4gl、フォームとモジュールをコンパイルできます。しかし、デバッグすると、「Press Return to continue」という空白の画面が表示されます。

コマンド ラインからfgldb次のエラーが返されます。

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

DB が稼働isql中で、クエリを実行できます。

システムの詳細:

  • OpenSuSE 12.1 32 ビット
  • Informix RDS 7.50 UC6
  • Informix SQL DEV 7.50 UC6
  • Informix Growth Edition 11.70 UC5
  • Informix インタラクティブ デバッガ 7.50 UC6

私はネットを検索しましたが、役立つものは何も見つかりませんでした。何が問題なのですか?

更新 1:

助けてくれてありがとう。別のディレクトリにインストールしようとしていますので、お知らせします。これはおそらく金髪ですが、別のディレクトリにインストールするにはどうすればよいですか。しようとすると、エラーが発生します。

「INFORMIXDIR と作業ディレクトリが一致しません。」"INFORMIXDIR = /usr/informix" "現在の作業ディレクトリ = /usr/informix/i4gl"

インストール先に一致するように $INFORMIXDIR を編集できますか?

どうもありがとう、

ニール

更新 2:

OK、両方とも /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 変数を元に戻すことはありませんでした。私はこれを行い、DBを停止して開始しました。

デモ f_custkey.per (以前と同様に store_demo db を使用) フォームをコンパイルしようとすると、エラー -329 および -2810 が発生します。これは、データベースが見つからないことに関係しています。

これがあなたの最後の声明で話していたことかどうかはわかりません。これら2つを別々のディレクトリに分割することでデバッガの問題が解決したかどうかはわかりませんが、今では何もコンパイルできませんが、近づいていると感じています.

敬具、

ニール

アップデート 4 - ファイナル!

よし、今は動いている。

dbaccessdemo7 コマンドを再度実行してデータベースを再作成すると、すべてうまくいきました。

ex4 のコンパイルとデバッグが機能するようになりました。

たくさんの情報をありがとうございます。学びながら学びます。

敬具

ニール

4

3 に答える 3

2

発生しているコア ダンプ/クラッシュは、今週初めに発見された不幸なバグです。ESQL/C コードは (今日の時点で) 修正されていますが、修正されたリリースはまだ入手できておらず、しばらくは公開されません (「早くても感謝祭の後まで」をお読みください)。I4GL と ISQL のコードは、まだ修正する必要があります (別の問題ですが、密接に関連する問題もあります)。

何が起こったかというと、CSDK で構造体のサイズが変更されたということです。I4GL は 1 つのサイズでコードをコンパイルし、CSDK ライブラリは別のサイズを想定しています。違いは約 4 バイトです。これにより、メモリの上書きを追跡するのが難しくなります。

このkw__numkws問題は、7.50.UC6 で修正されたと思われる古い問題です。そのリリースが修正されたかどうかを確認する必要があります。修正されている場合は、そのエラーがまだどのように表示されているかを確認する必要があります。

固定されたアンサンブルが利用可能になるまで、いくつかの短期的なオプションがあります。

  1. サーバー ディレクトリに I4GL (および ISQL) を再インストールします。これが機能することを証明していません。コンセプトは、I4GL が、更新された 3.70.xC6 バージョンではなく、ビルドに使用された CSDK ライブラリを使用していることを確認することです。

  2. I4GL (および ISQL) を別のディレクトリ (/opt/IBM/i4glおそらく ) に再インストールします。sqlhostsこのディレクトリに適切なファイルを用意してください。これは、IDS ディレクトリ内のものへのシンボリック リンクである可能性があります。LD_LIBRARY_PATH を適切に設定して、I4GL プログラムをこの代替ディレクトリに向けます。

オプション 2 は、I4GL が「正しい」CSDK を使用していることを確認します。オプション 1 でも同じ結果が得られる可能性がありますが、保証する準備はできていません。したがって、オプション 2 をお勧めします。

あなたの I4GL コードが DB-Access または server$INFORMIXDIRにある他のプログラムを実行する必要がある場合、それに対処する方法があります — コメントで示してください。説明しますが、必要がない場合は混乱させたくありません。(それほど難しいわけではありませんが、完全に簡単というわけでもありません。)

于 2012-11-17T01:55:18.447 に答える
1

オプション 3. は、4GL ツールの作成に使用された CSDK を検出し、現在のツールの代わりにそれをインストールすることです。4GL 7.50FC6 の場合は CSDK 3.70FC4 です。

エンジンとツールを分割するのに問題がありました。これまでのところ、これは機能しているようです。

于 2013-03-08T20:02:17.630 に答える