C++ VS2010 C+中的断点问题+;
我正在使用VS2010 Ultimate。 具有代码:C++ VS2010 C+中的断点问题+;,c++,visual-studio-2010,C++,Visual Studio 2010,我正在使用VS2010 Ultimate。 具有代码: //file IntSet.h #include "stdafx.h" #pragma once /*Class representing set of integers*/ template<class T> class IntSet { private: T** myData_; std::size_t mySize_; std::size_t myIndex_; public: #pragma region ctor
//file IntSet.h
#include "stdafx.h"
#pragma once
/*Class representing set of integers*/
template<class T>
class IntSet
{
private:
T** myData_;
std::size_t mySize_;
std::size_t myIndex_;
public:
#pragma region ctor/dtor
explicit IntSet();
virtual ~IntSet();
#pragma endregion
#pragma region publicInterface
IntSet makeUnion(const IntSet&)const;
IntSet makeIntersection(const IntSet&)const;
IntSet makeSymmetricDifference(const IntSet&)const;
void insert(const T&);
#pragma endregion
};
//file IntSet_impl.h
#include "StdAfx.h"
#include "IntSet.h"
#pragma region ctor/dtor
template<class T>
IntSet<T>::IntSet():myData_(nullptr),
mySize_(0),
myIndex_(0)
{
}
template<class T>
IntSet<T>::~IntSet()
{
}
#pragma endregion
#pragma region publicInterface
template<class T>
void IntSet<T>::insert(const T& obj)
{//BREAKPOINT---------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/*IF I SET A BREAKPOINT HERE AND AFTER THAT I CHANGE SOMETHING IN THE BODY
I'M GETTING MSG SAYING THAT THE BREAKPOINT WILL NOT CURRENTLY BE HIT, AFTER I REBUILD
THE BREAKPOINT IS VALID AGAIN*/
/*Check if we are initialized*/
if (mySize_ == 0)
{
mySize_ = 1;
myData_ = new T*[mySize_];
}
/*Check if we have place to insert obj in.*/
if (myIndex_ < mySize_)
{
myData_[myIndex_++] = new T(obj);
return;
}
/*We didn't have enough place...*/
T** tmp = new T*[mySize_];//for copying old to temporary basket
std::copy(&myData_[0],&myData_[mySize_],&tmp[0]);
delete myData_;
auto oldSize = mySize_;
mySize_ *= 2;
myData_ = new T*[mySize_];
std::copy(&tmp[0],&tmp[oldSize],&myData_[0]);
myData_[myIndex_] = new T(obj);
++myIndex_;
}
#pragma endregion
//文件IntSet.h
#包括“stdafx.h”
#布拉格语一次
/*表示整数集的类*/
模板
类集合
{
私人:
T**我的数据;
标准::大小;
std::大小\u t我的索引\u;
公众:
#pragma区域ctor/dtor
显式IntSet();
virtual~IntSet();
#布拉格端区
#布拉格区域公共接口
IntSet-makeUnion(const-IntSet&)const;
IntSet-makeIntersection(const-IntSet&)const;
IntSet makeSymmetricDifference(const IntSet&)const;
无效插入(常数T&);
#布拉格端区
};
//文件IntSet_impl.h
#包括“StdAfx.h”
#包括“IntSet.h”
#pragma区域ctor/dtor
模板
IntSet::IntSet():myData_u2;(nullptr),
mySize_0,
我的索引(0)
{
}
模板
IntSet::~IntSet()
{
}
#布拉格端区
#布拉格区域公共接口
模板
void IntSet::insert(常量T&obj)
{//断点-----------------如果在程序运行时更改代码,代码将不再与编译的代码匹配,因此在程序停止并使用新源重新生成之前,调试器(通常)无法管理断点
在某些情况下,Visual Studio支持“编辑并继续”调试,您可以在调试器在断点处停止时编辑文件,然后当您继续时,它将重新编译该代码并使用修改后的代码继续进行调试。如果在程序运行时更改代码,代码将不再与编译的代码匹配,因此在程序停止并使用新源重新生成之前,调试器(通常)无法管理断点
在某些情况下,Visual Studio支持“编辑并继续”调试,您可以在调试器在断点处停止时编辑文件,然后当您继续时,它将重新编译该代码并使用修改后的代码继续。您的标题可能需要一些改进…看起来不像是一个bug…但这不是执行此操作的最佳方式它的…VS无法正确编译背景…这是一个很大的问号。但是这满屏的代码应该是一个bug吗?你忘了提出问题。投票结束…我们没有钱试图破解你不清楚的问题。如果你们阅读代码中的注释,你会看到问题是什么,甚至不会虽然这不是一个问题的形式。他想知道为什么在更改函数体后断点无效。你的标题可能需要一些改进…看起来不像是一个bug…但这也不是最好的方式…VS无法正确地进行后台编译…这是一个很大的问号。但是那么这一整屏的代码应该是一个bug呢?你忘了提出问题。投票结束……我们没有得到报酬试图破解你不清楚的问题。如果你们阅读代码中的注释,你会看到问题是什么,即使它不是问题的字面形式。他想知道断点为什么无效在更改函数体之后。由于每个人都关闭了它,我无法给出正确的答案。我想你看到的只是断点工具提示不同步,因为后台编译器没有完全跟上你的更改。我经常看到断点图标让我认为它不起作用,但一旦我开始调试,然后它将再次变成一个填充的圆圈,它将实际工作。我只是忽略它,并假设它是Visual Studio错误。@Jaxidian感谢您的回答,但在我的情况下,它只是跳过了这个断点(不要进入fnc正文)@Jaxidian我个人认为这是一个bug,我将向VS团队报告这一行为。@Jax是对的。您正在使用模板,在更改这些模板之后,您通常需要强制进行适当的重新编译。@知道:像断点这样微不足道的事情可能不会被破坏。假设它是IDE/编译器中的bug是您最不应该做的事情@Knowing:如果你做了一个更改,但没有重新编译,为什么你会期望它会到达那个断点?在那个时候,你的代码与你的程序集不匹配,当你处于那种状态时,我不希望它具有可预测性。因为每个人都关闭了这个,我无法给出正确的答案。我想你看到的只是断点工具提示没有hing只是不同步,因为后台编译器没有完全跟上您的更改。我经常看到这种情况,断点图标让我认为它不起作用,但一旦我开始调试,它将再次变成一个填充的圆圈,它将真正起作用。我只是忽略它,并假设它是Visual Studio错误。@Jaxidian Thanks为您的答案,但在我的情况下,它只是跳过这个断点(不要进入fnc正文)@Jaxidian我个人认为这是一个bug,我将向VS团队报告这一行为。@Jax是对的。您正在使用模板,在更改这些模板之后,您通常需要强制进行适当的重新编译。@知道:像断点这样微不足道的事情可能不会被破坏。假设它是IDE/编译器中的bug是您最不应该做的事情@Knowing:如果你做了一个更改,但没有重新编译,为什么你会期望它达到那个断点?在那个时候,你的代码与你的程序集不匹配,而当你处于那个状态时,我不期望它的可预测性。