|
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
よくわからないバグに対する対応(1)で、おかしくなるところは
なんとなくわかったのだけれども、そこにはフ゛レークホ゜イントがかけられなかったり、
開発環境では出てこないバグに対する対応です。
[A]
まず、プロジェクト全体のコピーを取って保存しておきましょう。
変なコードを追加していくので、後で元に戻すのが大変だからです。
1.printfデバッグ
showMessage('変数の値は'+strVar);//文字列型変数のとき
showMessage('変数の値は'+inttostr(intVar));//数値型変数のとき
という具合にして、変数の中身を覗く方法です。
2.assert手続き
Delphi3から新しく追加された機能です。
boolean型の変数を渡して、もしその内容がfalseであれば
プログラムは例外を発生して終了します。
一部のWindowsAPIのように、falseが帰ってくると困る関数を呼び出すときや、
引数で渡された値が適切かどうかチェックするときなどに使います。
詳しくは、「Delphi3の新機能−コンパイラの変更」を見てください。
3.ログファイルを書く。
printfデバッグでは量が多すぎていちいち見ていられない場合や、
今一つ発生個所がわからないときなどに使います。
procedure writeLogFile(name:string);
var
FileToSave: TextFile;
begin
AssignFile(FileToSave, DEBUG_LOG_FILENAME);
Append(FileToSave); { 末尾にさらにテキストを追加します }
Writeln(FileToSave,name);
CloseFile(FileToSave); { ファイルを閉じ, 変更を保存します }
end;
こんなかんじの関数を作って、
writeLogFile('変数の値は'+strVar);//変数の値の記録
writeLogFile('hogehoge関数に入ったよ');//関数の出入りを記録する
writeLogFile('hogehoge関数無事終了');
writeLogFile('hogehoge関数無事終了 返り値は'+result);
//返り値を記録してみる
というようなコードをあっちゃこっちゃに埋め込んで、実行してみます。
で、問題の現象がおきたらログファイルを見て、何がおきたかを
解析するわけです。
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|