winXP pro VS2005 MFC_SDI
デバッグ中のフリーズ現象に困っています。
わかる範囲だと、次のような現象です。
1.特定の関数を呼び出すとフリーズするようです
2.関数の共通点は引数に参照を使っているもの
void CClass::Func1( vector<int>& vecInt );
がおおい。
3.そのフリーズする関数でもブレークポイントで一度求めずに動かすと
正常に走る。debug,relese共に。
4.そのフリーズする関数でブレークポイントでとめてもF11で
ステップインするとフリーズしない
5.そのフリーズする関数でブレークポイントでとめてF10で
ステップ実行するとフリーズする
6.一度関係ないところでブレークポイントでとめて、F5で
再実行すると高確率でフリーズする
7.フリーズの再現率は70%ぐらい
8.呼び出しはthis->Funcで呼んでいる
(他は試してない)
9.OSの時計が止まるぐらいフリーズするマウス意外動かない
10.フリーズ後shift+F5で 5分ぐらいかけて正常に戻る。
11.最近気が付いたのでいつからかわからない
コレぐらいです。
この現象は私だけでしょうか?
誰か対処方法や、原因、再現できる人、などいましたら
教えてください。
コードが原因なのかわかりませんが、
このAPPは使っていて大丈夫でしょうか?
よろしくお願いします。
#参照引数の是非はとりあえずおいておいてください。
#
VS2005のデバッガは問題が多いらしいです。
こんなのとか。
http://support.microsoft.com/kb/936681/ja
そういうもんだと割り切るしかなさそう。
解決策が見つからないようなら、Microsoftに直接聞いたほうが良いでしょう。
(開発者でもない人(デバッガのつくりをわかっていない人)に聞いてもね。)
>Blueさん
早速ありがとうございます。
デバッガのバグですか。
再インストールしてもダメならデバッガのバグということで
良いのでしょうか?
コーディング内容でデバッガが
フリーズするなんて無いですよねぇ?
> コーディング内容でデバッガが
> フリーズするなんて無いですよねぇ?
2003ですけど、スレッドのルーチン等をデバッグするとフリーズしやすいですね。
>ITOさん
まさに、ワーカードスレッドの中の事象です。
いちいちPC再起動は大変ですよ。
VC2003ProSP1ですが、再開時にタイムアウトすることは結構あっても、
提示のようなフリーズは起きてません。
(Side by Sideで2005EEも入ってますし、他社IDEも複数入っています…)
俺もマルチスレッドアプリをデバッグしていて
ステップ実行とか何度かしていると全体的にフリーズ
そのアプリだけ強制終了とかで解決するようなことはなく
電源切るとか強制的にPC再起動ですね。
どのバージョンからか不明だがだいぶ前からだな。
>いちいちPC再起動は大変ですよ。
極たまにあってもそんなに頻度は多くないです。
VC6.0はよく再起動になりますね。
XP・VC6のときは、IMEとの関連でよく固まるってこと聞いたことありますね。
私の場合、再起動ではなくてログオフで強制終了させています。
(だめなら強制終了、、、)
>Banさん
そうですか。
自分のVSというより、
スレッドのあ知らせ方のタイミングみたいなものなのでしょうか?
>wclrp さん
同じような症状のようです。
スレッド系のデバッグに何か
問題があるのでしょうね。
>ITOさん
再起動か、5分待つかの天秤です。
(メモリのごみ)が不安なので再起動してます。
>Blueさん
IMEはいじってないんですが。
ログオフだと確かに時間短縮できるかもですね。
ありがとうございます。
再インストールしても変わりませんでした。
面倒ですが、だましだましやっていきます。
貴重な情報ありがとうございました。
> IMEはいじってないんですが。
そういうことではなくて、単に、IME と VC で相性が良くないらしい、というハナシ。
σ(^^)もよく、WinXP+VC2003でデバッグ時フリーズが多発していました。
IMEの詳細なテキストサービスを無効にする、としたり各種SPなどを当てたら
かなり頻度は減りましたが、スレッドのデバッグは、やはり固まりやすいです。
> VS2005のデバッガは問題が多いらしいです。
> こんなのとか。
> http://support.microsoft.com/kb/936681/ja
どうでもいいけど、すごい翻訳ですな。読むとイライラする。
機械翻訳だから翻訳に責任もてないと言い訳するならば、
せめて、元の英語のページへのリンクぐらい張っとけよと思う。
最後のjaをenに変えるだけなんだけどね。
>元の英語のページ
ページ右側にボタンあるよ
情報、ありがとうございます。
あの駄文を英語に翻訳しようとは思いつかなかったよ。