デバッグビルドが止まる、リビルドの生成物がおかしい

[戻る]
pon 2018/04/18(水) 11:46:30
■環境
OS:Windows7
VS2005 VC++ MFCのソースコード

■状況
お聞きしたい内容は2つあります。

@かなり前から(らしい)のですが、Debugのリビルドをすると、ビルドがだんだん遅く
なりそのうち、修正してもいないソースでエラーとなって停止。停止後、再度ビルドをす
ると途中からビルドが始まり、問題なく最後まで進んでビルド完了する。
なお、Releaseのリビルドであれば、最後までビルドは進むため問題なし。

Aリリースのリビルドでできた生成物を動作させると、とある場所でヒープ破壊メモリエ
ラーが発生。コード調査するも、原因不明。ところが、エラーが発生したコードだけを再
ビルドするとエラーが出てこなくなりました。リビルドが何かおかしくなったのでしょう
か。なお再現性があります。

@もAも、ビルド中に何かPCが他の作業をしていたということはなく、またPCスペッ
クも十分にあります。
どなたかご存知であれば、ご教授ください。

仲澤@失業者 2018/04/19(木) 13:23:15
あまり確定的な事は言えません。あしからず。

@のVisual Studioが挙動不審となる現象は昔からあります。

(1)PCスペック不足。OSが64bitの方が動作が良好で、
  かつメモリーが8GByte以上必要ですね(32bitOSだと意味ないですけど)。

(2)VSが古すぎるかもしれません(一応VS2005はWin7は対応OSには入ってます)。
    VS2013、VS2015が最も安定したバージョン、VS2017はバグが多くて自分も様子見。
    (参考)https://www.microsoft.com/ja-jp/dev/support/tools.aspx
  Community版なら条件付きですがタダで使用できます。

Aについては、

(3)フルコンパイル(ソリューションの「リビルド」)してもだめなら、コードにバグがあ
ります。

(4)複数プロジェクトを持つソリューションの場合、
 「オプション」の「プロジェクト及びソリューション」の「ビルド/実行」の
 「並行にビルドするプロジェクトの最大数(X)」を「1」にしてみる。

(5)当たり前ですが(デフォルトがそうでなかったかもしれないので)、
 プロジェクトのプロパティで、「警告レベル」は「Level3(/W3)」にすること。
 この設定で、警告数が0でなければなりません。
 警告が出るようならその内のいくつかはバグの可能性があります。

pon 2018/04/24(火) 11:56:46
仲澤様

ご返信ありがとうございます。

VSのバージョンを変えたいところではありますが、
外部購入のライブラリがVS2005でしか対応してないようでして、
変えることができません。

Aについては、やはりコードのバグでしょうかね。。
slnファイルは1つだけで、「警告レベル」は「Level3(/W3)」でした。
バッファオーバーランの原因は、なかなか見つにくいです。
コードが大規模というところもありますが、、

お手数おかけしました。

古いスレッドには追加発言できません。