人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

delphiのデバッグに関するノウハウがまったくありません。どうやりますか?どこかにありますか?教えてください。




土曜を丸々費やして右往左往し続けて、検証アプリケーションを2つも作らされたバグが一行コメントアウトしただけで消えました。しかも、つまらないケアレスミスです。デバッグのノウハウさえあればこんな事にはならなかったはずです。

当方が持っているノウハウは、log2strという手続きを作ってoverloadし、integerもstringもbooleanもその他(tnodeとか)のものも受け取ったものは全てstringに変換して表示して、バグを探す、という手法だけです。コメントアウト、コメントアウト解除は「log2str(hoge)」を「// log2star(hoge)」に置き換える事で行っています。非常に効率が悪い(効率が悪いだけではなくどこに問題があるのかも見つけられない)のでいい加減なんとかしたいです。

●質問者: SuzukiU
●カテゴリ:コンピュータ
✍キーワード:Delphi hoge String まら アプリケーション
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● KUROX
●25ポイント

原始的な方法しかおもいつきませんが取り合えず。

delphiでなくて、かなり一般的だと思ってます。

http://kakinotane.s7.xrea.com/delphi/d2/Debug.html

開発環境で、ステップ実行、ブレイクポイントの設定、

変数のウオッチとか使うと便利かと思います。

--------------------------------------------

(1)机上確認は?

(2)テストするときの範囲は?

いきなりすべてと言うのは辛いような。

部分・部分確認して、積み重ねて、最後に全体のテストなら

わかりますが。

(3)問題を発見しやすいようにロジックを書くしかないと

思います。

(4)ログを最初から埋め込んでコーディングする

関数、イベントのSTART、ENDログ、エラーログ

必要なら変数の受け渡した値を出力

(5)好みにもよりますけど

テストしたコードと実行コードが違うのは危険な感じが。

「// log2star(hoge)」に置き換えるのは私の中ではNGで

log2star(hoge)の実装を空にする。

関数を空にしても、関数コール分遅くなりますけど。

実際には、グローバルでデバッグフラグが何か持って

変数の値を変えるだけで、他は何も触らないのが理想ですが。

大きいプログラムなら、変数も変えてほしくなくて、

ログをはくかどうかは、プロパティファイルとかから

読み込んで決めてほしいような気がします。


2 ● はなげ
●65ポイント ベストアンサー

私のデバッグ手法ですが、


こみいったバグは、素直に、内蔵のデバッガーを使います。

デバッグ時は、式の評価で、値を出すこともできますし、

ウォッチウインドウで、値を見ることもできます。

ローカル変数の表示ウインドウも見ることもお忘れなく。

ブレークポイントは、式の条件式を指定すれば(実行速度が遅くなりますが)、的確にブレークポイントを設定できます。


それと、上記のようなデバッグ時の関数呼び出しは、

コメントアウトせずとも、

{$IFDEF DEBUG}

log2star(hoge)

{$ENDIF}

などとして、

プロジェクトオプションで、デバッグ時にDEBUGを定義したり、はずしたりします。(再コンパイルをお忘れなきよう)



また、あと、私は、ファイルへのログ記録用のクラスを作っておき、

主要なところで、ログを出力しています。


そのクラスでは、ファイルへ出力すると同時に、OutputDebugStringで、IDEのメッセージをログウインドウに表示しておくと、実行時もそのまま見られて便利です。

IDEのデバッグ時以外に、OutputDebugStringの値を見たいときは、

DubugViewなどを使います。

http://www.microsoft.com/technet/sysinternals/utilitiesindex.msp...


3 ● minkpa
●10ポイント

http://0xcc.net/blog/archives/000161.html

こちらは悪いノウハウについての解説です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ