Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VS2010 C+中的断点问题+;_C++_Visual Studio 2010 - Fatal编程技术网

C++ VS2010 C+中的断点问题+;

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

我正在使用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/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:如果你做了一个更改,但没有重新编译,为什么你会期望它达到那个断点?在那个时候,你的代码与你的程序集不匹配,而当你处于那个状态时,我不期望它的可预测性。