お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"トレース実行"





(**** trace ==

 デルファイのプログラムをトレースします。

 デルファイのプログラムをトレースしたい場合、問題箇所にカーソル
を置いて、[F04]を押せばいいのですが、これがなかなか面倒なの
で、次のようにしています。

 * トレースを開始すると、エディタのカーソルが移動してしまうの
    で、もう一度同じところからトレースするのが難しくなります。

 直接のエラーが出る場所は分かっているが、それを呼んでいる部分が
知りたい場合に便利だと思います。

 * 問題箇所に「raise exception.create( Msg );」を入れただけで
    はトレースできません。単に例外を発生させるだけだとアプリケー
    ションの例外処理に飛んでしまい、それがどこから呼ばれたものか
    分からなくなってしまいます。

 次のように使います。

 1 オプション−環境−例外でデバッガに戻る、をチェックしておき。

 2 怪しげな部分に「trace('コメント');」と入れておきます。

 3 コンパイル+実行します。

 4 実行がその部分に来ると。マウスカーソルが[STOP]になり、

 ┌──────────────────────┐
 │プロジェクトxxが・・例外を生成しました。  │
 │再開するにはステップ実行または・・          │
 │             ┌──┐                       │
 │             │OK│                       │
 │             └──┘                       │
 └──────────────────────┘

と出ますので、OKをクリックします。すると、デルファイのエディタ
が、次の行を表示します。

 ┌────────────────────┐
  │procedure Trace( const Msg:string );    │
  │begin                                   │
  │  try                                   │←この行にカーソル
  │  { -- デバッグ開始。-- }               │
  │  { -- トレース実行([F07]か[F08])を押 │
  │  raise exception.create( Msg );        │
  │  except                                │
  │  end;                                  │
  │end;                                    │
  └────────────────────┘

 そこで、[F08]を2回ほど押すと、これを呼びだした行が表示さ
れ、以後、トレースしていくことができるようになります。

 ループなどを飛ばしたいときは、ループを抜けたところにカーソルを
置いて[F04]を押します。

****)

procedure TraceFmt( const Msg:string ; const Args: array of const );
begin
  try
  { -- デバッグ開始。-- }
  { -- トレース実行([F07]か[F08])を押してください。-- }
  raise exception.createFmt( Msg , Args );
  except
  end;
end;

procedure Trace( const Msg:string );
begin
  try
  { -- デバッグ開始。-- }
  { -- トレース実行([F07]か[F08])を押してください。-- }
  raise exception.create( Msg );
  except
  end;
end;

                              98/5/13(Wed) GGB03124 熊谷秀武

Original document by 熊谷秀武        氏 ID:(GGB03124)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum