プログラム実行中の一時停止について
投稿者 るきお  (社会人)
投稿日時
2012/11/4 20:35:32
診断のために情報を教えてください。
■知りたいこと1.症状
とまらない代わりにどうなりますか?
何かエラーが発生しますか?それとも何事もないようにプログラムが実行されていますか?
■知りたいこと2.ブレークポイント
ブレークポイントの行は下記画像のように茶色くなっていますか?
■知りたいこと3.実行中のブレークポイント
茶色くなっているとして、実行ボタンを押してから、停止しないでソースコードを見たときに、
ブレークポイントは上記画像のように茶色くなったままですか?
それとも一部が白・透明になったりしていますか?
■知りたいこと4.Stop
ブレークポイントの代わりにStopと書くと止まりますか?
例:
※この例を実行すると、xに2を代入した直後にプログラムは停止します。
■補足
Express Editionを使っている場合はツールバーのRelease、Debugは表示されないので忘れてください。
■知りたいこと1.症状
とまらない代わりにどうなりますか?
何かエラーが発生しますか?それとも何事もないようにプログラムが実行されていますか?
■知りたいこと2.ブレークポイント
ブレークポイントの行は下記画像のように茶色くなっていますか?
■知りたいこと3.実行中のブレークポイント
茶色くなっているとして、実行ボタンを押してから、停止しないでソースコードを見たときに、
ブレークポイントは上記画像のように茶色くなったままですか?
それとも一部が白・透明になったりしていますか?
■知りたいこと4.Stop
ブレークポイントの代わりにStopと書くと止まりますか?
例:
Dim x As Integer
x = 2
Stop
x += 1
※この例を実行すると、xに2を代入した直後にプログラムは停止します。
■補足
Express Editionを使っている場合はツールバーのRelease、Debugは表示されないので忘れてください。
投稿者 bz9  (中学生)
投稿日時
2012/11/4 21:10:43
もしかしたら・・・なんですが、
ブレークポイントを置いた行を通っていないプログラムとか
じゃないですよね。
こんな感じに
BreakPointTestメソッドのMsgBoxを通っていないので一時停止されません。
ブレークポイントを置いた行を通っていないプログラムとか
じゃないですよね。
こんな感じに
Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox("テスト")
End Sub
Private Sub BreakPointTest()
MsgBox("ブレークポイントテスト") 'この行にブレークポイント
End Sub
End Class
このコードの場合、ブレークポイントを置いたBreakPointTestメソッドのMsgBoxを通っていないので一時停止されません。
投稿者 (削除されました)  ()
投稿日時
2012/11/5 21:13:05
(削除されました)
投稿者 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から通知されます。」とでて、プログラムの終了をクリックすると、ふつうにプログラムが終了します。
投稿者 YuO  (社会人)
投稿日時
2012/11/5 22:59:48
F5で「デバッグ開始」してください。
Ctrl + F5は「デバッグなしで開始」です。
IDE使って「デバッグなしで開始」する必要はほとんどありません (Explorerから実行するなりすればよいから)。
IDEから実行する場合はF5の「デバッグ開始」をする癖を付けて下さい。
Ctrl + F5は「デバッグなしで開始」です。
IDE使って「デバッグなしで開始」する必要はほとんどありません (Explorerから実行するなりすればよいから)。
IDEから実行する場合はF5の「デバッグ開始」をする癖を付けて下さい。
投稿者 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行ずつ実行はできたけど、
タスクマネージャーのタスクの終了でしか閉じられなくなります。
これは非常に不便です。
誰かなおせるひとがいたら、教えてください。
[F5]キーでデバッグ実行したら、ブレークポイントとStopはうまくいきました。
でも、[Ctrl] + [PAUSE]([BREAK]) は、押しても何もなりません。・・・
実行って、たとえば初級講座第41回 リスト1のコードの場合、Button1をクリックして、
0,1,2... ってなってる時に、[Ctrl] + [PAUSE]([BREAK]) を押せばいいんですよね?
なにもならないからボタンを押す前にも押しましたが無反応です。
あと、ブレークポイントとStopはうまくとまったんですけど、
実行が止まった瞬間(ボタン押したらすぐ)に、いままで手前にあったForm1が
とたんに後ろにさがります。しかも、[F10]で1行ずつ実行はできたけど、
タスクマネージャーのタスクの終了でしか閉じられなくなります。
これは非常に不便です。
誰かなおせるひとがいたら、教えてください。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
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 の行から再開されるため、
通常の終わらせかた(フォーム右上の×ボタンなど)ができるかと思います。
(ただし、途中の処理をスキップさせている分、正規の流れとは異なる処理になります)
その他、「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/10 09:12:39
魔界の仮面弁士さん、ありがとうございます。
ノートパソコンを使っているだけで、押すボタンが違うのは知りませんでした。
[fn] + [Break]で一時停止できました。
プログラムを閉じるのも、[F5](ツールバーの続行ボタン ▶ )をしてから閉じることができました。
ノートパソコンを使っているだけで、押すボタンが違うのは知りませんでした。
[fn] + [Break]で一時停止できました。
プログラムを閉じるのも、[F5](ツールバーの続行ボタン ▶ )をしてから閉じることができました。
初級講座第41回 (実行の一時停止とデバッグ) のところで、プログラムの実行を一時停止する
やり方がのってました。
僕、VB2010でためしたんですけど、
ブレークポイントとかいうのをしても、
[Ctrl] + [PAUSE]([BREAK])をおしても、
全然止まりません!
あと、ツールバーのRelease, Debagとかいうのもよくわかりません。
これができないとその先の内容もできないみたいな感じで、困っています。
誰かわかる人がいれば教えてください。