タイトル | : Re^2: ループ途中のデバッグについて |
記事No | : 11932 |
投稿日 | : 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 コードを必ず除去しておく必要があります。
|