Tips

あるコードのデバッグ

日付2003/11/20
ID30381 (英語原文参照)
バージョン2003
プラットフォームMac & Win

コードのデバッグは苛立たしい経験かもしれません。
書いたプログラムは、間違いなさそうです。しかしそれをインタプリターモードまたはコンパイルモードで実行しても正しく作動しません。
ある特定の場合では、問題があらわれないときもあります。

何が間違っているのでしょうか?

コードを着実にトレースしたいならば、4Dのトレースウィンドウを使用し、変数名を入力し、内容を確認することができます。これにより、問題の解決することができます。ウェブ・プロセスをトレースするときおよび定義されていない変数を使用するとき、この種のコード・エラーは非常にしばしば見ることができます。
ブレークポイントの使用は、もっと信頼できるでしょう。コードはトレース・ウィンドウなしで実行し、ブレークポイントが到達すると止まります。
データ・ベースがコンパイルされたモードでは、デバッガが使用できません。そのため、デバッギングの方法は制限されてしまいします。

どのコードがいつ、実行されるのか知っているならば、変数の値を表示するALERTコマンド、およびBEEPコマンドの組み合わせを使用するのもよいでしょう。
ALERTコマンドを使用すると、データ・ベースの操作に影響するかもしれません。On Activate, On Deactiveteイベントなどに影響を与えるからです。

コンパイルされたデータ・ベース用の最良のデバッギングテクニックはログファイルを使用することです。
ディスク・ドキュメントを生成し、情報を追加するSEND PACKETコマンドを使用するプロセスを作成することができます、コードはどうやって実行するのでしょうか。
例えば、メソッドが他のメソッドを呼ぶ場合、現在のユーザ、日付および時間のような若干の情報、そして、メソッド名。メソッドの開始、終了などをログを記録してもよいでしょう。さらに、主なエラーが生じるとき、または重大なテストが失敗するとき、リクエスト上のそのような情報を記録してもよいでしょう。
特にマルチプロセス実行時の4Dのクラッシュの問題解決には有効です。プロセス番号のような情報、現在のユーザ、テーブル、レコード番号、現在のメソッドなどは、特定のプロセス、メソッドまたはコマンドのどこに問題があるのかを絞り込むことができるはずです。