アプリケーションをデバック中にPCフリーズ – プログラミング – Home

アプリケーションをデバック中にPCフリ...
 
通知
すべてクリア

アプリケーションをデバック中にPCフリーズ


sunyopu
 sunyopu
(@sunyopu)
ゲスト
結合: 23年前
投稿: 68
Topic starter  

質問があります。

複数スレッドで複数の同期オブジェクト(CSemaphore)を使用し動作するアプリケーション
を作成しているのですが、それをデバック版で起動しステップ実行していると、パソコン
がフリーズしてしまいます。

フリーズすると、パソコンのHDアクセスなんてしてないのに、マウスカーソルがほとんど
砂時計状態になり、ソフト的にシャットダウンさえもできなくなります。

タスクマネージャも処理がとてつもなく遅くなり、フリーズの原因となったVisualStudio
やアプリのプロセスも終了させられません。

仕方がないので、ハード的にパソコンを再起動しています。

ただ、リリース版だと当現象は全く起きません。
VisualStudioとデバック中アプリが絡むことが原因なのでしょうか?

解決方法を知っている方がいましたら、教えていただけないでしょうか?

ちなみに、使用環境は、
WindowsXP Pro、Visual Studio6.0(SP5)


引用解決済
トピックタグ
たみあ
 たみあ
(@たみあ)
ゲスト
結合: 22年前
投稿: 57
 

関係があるかわからないけれど、現象的には類似すると思うので参考に

http://forums.belution.com/ja/vc/000/050/71s.shtml


返信引用
ボコノン教徒
 ボコノン教徒
(@ボコノン教徒)
ゲスト
結合: 22年前
投稿: 90
 

> 複数スレッドで複数の同期オブジェクト(CSemaphore)を使用し動作する

私の場合、DirectShowのアプリをデバッグしていて良くフリーズします。
マルチスレッド(WMD周りの)が怪しそうなんですが。
(Win2000 + SP2 + VC++Pro + ウイルスバスターCorp)

> ハード的にパソコンを再起動しています。

「再起動」よりも「ログオフ」の方が、イライラが少なくて済みます。


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

昔、私も似たような現象に遭遇しました。

COleDragSource と COleDropTarget を使って、DnDを行うソフトをデバッグ実行中の
時の事です。DnDを開始して、そのままVisualStudioの上にカーソルを移動した瞬間
(ドロップはしていない)に固まりました。
回避方法がどうしても分からなかった為、その操作をしないようにしました。

上記はVC++6.0(非VS6.0)で起こり、VS7(Pro.)では見られません。


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

誤字訂正です。
誤:COleDragSource
正:COleDropSource
失礼しました。


返信引用
汎
 汎
(@汎)
ゲスト
結合: 22年前
投稿: 43
 

Win-2000 VC++6.0 SP5 のマルチスレッドプログラムで同様の現象に悩まされ、
.Net に移行しました。


返信引用
sunyopu
 sunyopu
(@sunyopu)
ゲスト
結合: 23年前
投稿: 68
Topic starter  

たみあ さんに教えていただいた掲示板

http://forums.belution.com/ja/vc/000/050/71s.shtml

を見てみると、

・ウィルス対策ソフトの常駐させない。
・WindowsXPにSP1を適用しないといけない。
・VC,NETにしないといけない。

など、みなさんが、いろいろ解決策を講じているみたいでしたが、いずれもだめみたいで
す。

最終的には、IMEをタスクバー内に表示させなければ大丈夫みたいだということになって
いました。

http://forums.belution.com/ja/vc/000/162/33.shtml

IMEをタスクバー内に表示させず、しばらくデバックしてみようと思います。
何かありましたら、また書き込みます。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

経験的に、[F5] でビルド&実行した場合に現象が発生しやすいです。

もどかしいですが、ビルドが完了したのを見届けてからおもむろにデバッグ実行した方
が、再現性が低いような気がしています。


返信引用
7of9
 7of9
(@7of9)
ゲスト
結合: 22年前
投稿: 14
 

経験的に、同期オブジェクトでロックしている範囲に
ブレークポイントを設置して、そこでブレークすると、
フリーズすることが多い気がします。なので、次回か
らはロック前の位置でブレークさせたりしています。

経験的に、DirectShowで、ビデオやオーディオの再生を
している途中で、ブレークし、ステップ実行していると
リソース不足が発生し、しまいに、無応答になります。
そこで、そのような位置でブレークした場合は、
ステップ・トレースを使わず、ブレークポイント+実行で
こまめにブレークするようにしています。
#これは、実行すると、DirectShowのレンダラーなどが
#実行でき、メディアサンプルの処理が行われるからだ、
#と解釈しています。

#あくまでも、経験的にですが。
#そもそも、デバッガがこけるとは何事だ、ぷんぷん


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました