プログラム実行中の一時停止について への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 ABC  (中学生) 投稿日時 2012/11/10 09:12:39
魔界の仮面弁士さん、ありがとうございます。

ノートパソコンを使っているだけで、押すボタンが違うのは知りませんでした。
[fn] + [Break]で一時停止できました。

プログラムを閉じるのも、[F5](ツールバーの続行ボタン ▶ )をしてから閉じることができました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2012/11/7 21:41:19
> [F5]キーでデバッグ実行したら、ブレークポイントとStopはうまくいきました。
その他、「Debugger.Break()」を使う方法もあります。(Stop と同義)
あるいは、VB ツールバーの一時停止ボタン ▮▮ でも止まりますね。

この他、「Debug.Assert(条件式)」で止める方法もありますが、
こちらは少々使い道が異なりますので、説明省略。


> でも、[Ctrl] + [PAUSE]([BREAK]) は、押しても何もなりません。・・・
もしかして、ノートパソコンあるいは小型キーボードをお使いでしょうか。
一部のキーボードでは、[fn] + ([Ctrl] + ) [Pause/Break] というキー操作となります。

また、[Pause/Break] ではなく [Stop] キーな環境もあります。


> 0,1,2... ってなってる時に、[Ctrl] + [PAUSE]([BREAK]) を押せばいいんですよね?
はい、その通りです。


> なにもならないからボタンを押す前にも押しましたが無反応です。
特に処理させていないとき(アイドリング時)に、一時停止させることもできますが、
仮に停止させたとしても、実行させているソース行が存在しないため、
「利用可能なソースがありません」という画面が表示されるかと思います。


> とたんに後ろにさがります。
ブレークすると制御が Visual Studio 側に移るため、そのような動作となります。

また、一時停止中はアプリケーションが、一切操作不能となります。
あらゆるコード実行が停止されていますので、マウスやキーボードからの操作も、
基本的に受け付けなくなることに注意してください。
(環境によっては、フォーム画面の再描画さえ行われなくなります)


> [F10]で1行ずつ実行はできたけど、

ツールバーの続行ボタン ▶ を押すか、[F5]キーを押すかすれば、
先の続きから、また処理が再開されます。


> タスクマネージャーのタスクの終了でしか閉じられなくなります。
上記にも少し書きましたが、一時停止中は、キーボードやマウス操作を含む
一切の処理を受け付けないためです。処理を再開させてから終了させてください。

もしも長い処理の実行中で、通常の終了手順も取れないような状態の場合は、
VB ツールバーのデバッグの停止ボタン ■ で、デバッグ処理を停止させることもできます。

なお、長いループ処理の実行中などで、ループを脱出させてしまいたいような場合は、
一時停止させている時に、現在のブロックの末尾(End Sub)の行を右クリックして、
[次のステートメントの設定]を選ぶという方法もあります。こうすれば、
[F5] 等で再開させたときに、次の実行行が End Sub の行から再開されるため、
通常の終わらせかた(フォーム右上の×ボタンなど)ができるかと思います。
(ただし、途中の処理をスキップさせている分、正規の流れとは異なる処理になります)
投稿者 ABC  (中学生) 投稿日時 2012/11/7 20:40:04
YuOさん、ありがとうございます。

[F5]キーでデバッグ実行したら、ブレークポイントとStopはうまくいきました。
でも、[Ctrl] + [PAUSE]([BREAK]) は、押しても何もなりません。・・・

実行って、たとえば初級講座第41回 リスト1のコードの場合、Button1をクリックして、
0,1,2... ってなってる時に、[Ctrl] + [PAUSE]([BREAK]) を押せばいいんですよね?
なにもならないからボタンを押す前にも押しましたが無反応です。

あと、ブレークポイントとStopはうまくとまったんですけど、
実行が止まった瞬間(ボタン押したらすぐ)に、いままで手前にあったForm1が
とたんに後ろにさがります。しかも、[F10]で1行ずつ実行はできたけど、
タスクマネージャーのタスクの終了でしか閉じられなくなります。
これは非常に不便です。
誰かなおせるひとがいたら、教えてください。
投稿者 YuO  (社会人) 投稿日時 2012/11/5 22:59:48
F5で「デバッグ開始」してください。
Ctrl + F5は「デバッグなしで開始」です。

IDE使って「デバッグなしで開始」する必要はほとんどありません (Explorerから実行するなりすればよいから)。
IDEから実行する場合はF5の「デバッグ開始」をする癖を付けて下さい。
投稿者 ABC  (中学生) 投稿日時 2012/11/5 21:56:10

第41回初級講座 リスト1のコードでやりました。

1. 症状

[Ctrl] + [PAUSE]([BREAK])でも、ブレークポイントをつけても、
そのままプログラムが実行されます。

2. ブレークポイント

僕が使ったコードの場合、Ifなどをマウスでクリックすると、関連するThen, Else, End Ifなどがわかりやすいようちょっと濃くなる時にブレークポイントのついた部分は関連するものが白く表示されます。
それ以外はちゃんと茶色くなってます。

3. 実行中のブレークポイント

[Ctrl] + [F5]で実行しても、茶色くなったままです。

4. Stop

リスト2のコードで実行すると、
 「WindowsApprication1は動作を停止しました
 この問題の解決策を確認しています」 と出た後、
 「問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合はWindowsから通知されます。」とでて、プログラムの終了をクリックすると、ふつうにプログラムが終了します。 







投稿者 (削除されました)  () 投稿日時 2012/11/5 21:13:05
(削除されました)
投稿者 bz9  (中学生) 投稿日時 2012/11/4 21:10:43
もしかしたら・・・なんですが、

ブレークポイントを置いた行を通っていないプログラムとか
じゃないですよね。

こんな感じに
Class Form1
    
    Private Sub Form1_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles MyBase.Load
        MsgBox("テスト")
    End Sub
    
    Private Sub BreakPointTest()
        MsgBox("ブレークポイントテスト"'この行にブレークポイント 
    End Sub
End Class
このコードの場合、ブレークポイントを置いた
BreakPointTestメソッドのMsgBoxを通っていないので一時停止されません。
投稿者 るきお  (社会人) 投稿日時 2012/11/4 20:35:32
診断のために情報を教えてください。

■知りたいこと1.症状

とまらない代わりにどうなりますか?
何かエラーが発生しますか?それとも何事もないようにプログラムが実行されていますか?

■知りたいこと2.ブレークポイント

ブレークポイントの行は下記画像のように茶色くなっていますか?


■知りたいこと3.実行中のブレークポイント

茶色くなっているとして、実行ボタンを押してから、停止しないでソースコードを見たときに、
ブレークポイントは上記画像のように茶色くなったままですか?
それとも一部が白・透明になったりしていますか?

■知りたいこと4.Stop

ブレークポイントの代わりにStopと書くと止まりますか?

例:
Dim x As Integer
x = 2
Stop
x += 1


※この例を実行すると、xに2を代入した直後にプログラムは停止します。

■補足

Express Editionを使っている場合はツールバーのRelease、Debugは表示されないので忘れてください。


投稿者 ABC  (中学生) 投稿日時 2012/11/4 10:26:39
すいません。Visual Basic 中学校を読んでたんですけど・・・
初級講座第41回 (実行の一時停止とデバッグ) のところで、プログラムの実行を一時停止する
やり方がのってました。
僕、VB2010でためしたんですけど、
ブレークポイントとかいうのをしても、
[Ctrl] + [PAUSE]([BREAK])をおしても、
全然止まりません!
あと、ツールバーのRelease, Debagとかいうのもよくわかりません。
これができないとその先の内容もできないみたいな感じで、困っています。
誰かわかる人がいれば教えてください。