tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: ループ途中のデバッグについて
投稿日: 2008/03/28(Fri) 10:06
投稿者魔界の仮面弁士
別案として。

a = a + 1
Debug.Assert a <> 800

「a≠800」という条件を満たすなら、何もせずに通過しますが、
条件を満たさない(つまり、a=800)時には、一時停止します。

-------
私の個人的な使い分けとしては:

(1) ウォッチ式の「式が True のときに中断」を使う。
 → 今回のようなパターンでは、この手法を使うことが多いです。
  設定するには、コードウィンドウを右クリックして「ウォッチ式の追加」を選択し、
  [式]に「a = 800」と書き、[ウォッチの種類]を「式が True のときに中断」にします。


(2) Debug.Assert によるアサーション
 → 仮定条件を作成するときに使います。
  たとえば、自分で Function を作成したときに、そこに渡される引数の範囲が、
  特定の範囲内にあるという前提で設計されている場合に、Debug.Assert を
  しかけておくと、実行時に、意図しない値が引数に指定されて実行された事を
  チェックする事ができます。


(3) Stop ステートメントによる一時停止
 → 私は滅多に使いませんが、「開発環境では発生せず、実行環境でのみ
  発生する問題」を検証するために仕掛けることがあります。

といった感じです。
-------

(1) や (2) は開発環境でのみ停止しますが、(3) は EXE にした後も停止対象です。

(1) の設定は、プロジェクトを開きなおすと失われます。
そのため、これはデバッグ作業の一時的な設定に用いられます。

(2) の方法は、アサーション チェック(値の正常性検証)に使うものです。
(その特性上、本来は今回のような場面で使うべきものではありません)
引数チェックなど、「プログラムのこの箇所で、必ず真であるべき条件」を
記しておくもので、開発終了後もそのままコード中に残しておく事ができます。

(3) の方法は、唯一、EXE にした後にも停止する方法です。
そのため、今回のような場面で使うのであれば、本番用のアプリに
コンパイルする場合には、Stop コードを必ず除去しておく必要があります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。