トップ回答者
std::stackを使用するとデバッグが遅くなる

質問
-
ビルド環境はATLを有効、後はすべてデフォルトです。
以下をステップ実行すると、m2あたりで極端に遅くなります。ビジー状態になります。
VS2010,VS2008とも同じ現象になります。
#include "stdafx.h"
#include <stack>class CTest
{
public :
CTest(){}
int a;static std::stack<CTest*> gst;
};std::stack<CTest*> CTest::gst;
int _tmain(int argc, _TCHAR* argv[])
{
CTest m1;
CTest::gst.push(&m1);CTest m2;
CTest::gst.push(&m2);CTest m3;
CTest::gst.push(&m3);CTest m4;
CTest::gst.push(&m4);
return 0;
}
hotcake
回答
-
以下に心当たりはありますか?
[VS 2008 C++ Debugger hangs while debugging inline Code]
http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/[VS 2008 C++ Debugger hangs while debugging inline Code]
http://connect.microsoft.com/VisualStudio/feedback/details/343714/vs-2008-c-debugger-hangs-while-debugging-inline-code[自動変数] ウィンドウが表示されている場合、閉じてみてください。
- 回答としてマーク hotcake 2011年7月23日 4:21
すべての返信
-
以下に心当たりはありますか?
[VS 2008 C++ Debugger hangs while debugging inline Code]
http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/[VS 2008 C++ Debugger hangs while debugging inline Code]
http://connect.microsoft.com/VisualStudio/feedback/details/343714/vs-2008-c-debugger-hangs-while-debugging-inline-code[自動変数] ウィンドウが表示されている場合、閉じてみてください。
- 回答としてマーク hotcake 2011年7月23日 4:21
-
ぱっと見た感じ、CTest::gst.push()することで、デバッガーの表示が無限ループに陥ってるような。
つまり、 m1 を表示する際、public staticメンバーの gst を表示し、 gst の中には CTest* が含まれるのでこれを表示すると &m1 なので…という感じ。完全にデバッガー側の問題ではありますが、C++の設計としてpublicメンバーに gst を置くのもどうかと思います。gstをCTest外に置くかCTestのprivateメンバーにしてしまえば解決するはずです。
質問とまったく関係ないですが、std::stack<CTest*>ということはきっとCTestのデストラクターを呼ぶ気がないですよね?