Вопрос о точках останова в VS2010 C ++ - PullRequest
0 голосов
/ 15 апреля 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/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

См. Линке, помеченную как BREAKPOINT. Спасибо.

1 Ответ

5 голосов
/ 15 апреля 2010

Если вы измените код во время работы программы, код больше не будет соответствовать тому, что было скомпилировано, поэтому отладчик (как правило) не сможет управлять точками останова, пока программа не будет остановлена ​​и перестроена с новым источником.

При некоторых обстоятельствах Visual Studio поддерживает отладку редактирования и продолжения, в которой вы можете редактировать файл, когда отладчик остановлен на точке останова, затем при возобновлении он перекомпилирует этот код и возобновит с измененным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...