Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отображение точки прерывания программы

309
27 сентября 2006 года
el scorpio
1.1K / / 19.09.2006
Есть ли в Builder'е возможность при генерации исключительной ситуации перемещать курсор не на команду throw внутри функции, а на код вызова функции, сгенерировавшей ошибку

Объясняю на конкретном примере
Код:
const AnsiString = "Неверный индекс массива (%d).";

template <class T> class TArray
{
private:
     T *_fItems;
     int _fCount;
protected:
     void Error (const AnsiString Message, int Index) // Генерация исключения "Ошибка диапазона"
            {throw ERangeError (Message, &TVarRec (Index), 0);
     inline void Test_Index (int Index) const // Проверка номера элемента
            {if ((Index < 0) || (Index >= _fCount)
                   this->Error (cseInv_Item_Index, Index;}
public:
     inline const T& operator[] (int Index) const // Чтение элемента массива
             {this->Test_Index (Index); return _fItems [Index];}
     inline T& operator[] (int Index) // Чтение элемента массива для изменения
             {this->Test_Index (Index); return _fItems [Index];}

     ~TArray (void) // Деструктор
             {delete[] _fItems;}
     TArray (int Count) // Конструктор
             {_fItems = new T () [_fCount = Count); } // Пишу по памяти - не пинайте :)
};

//..............
int MyFunction ()
{
      TArray<AnsiString> MyArray (10); // Создание массива с 10 элементами
      for (int i = 0; i < 20; i++) // Это я типа баг допустил :)
              MyArray  = i; // Интересующая строка
}


Понятно, что при выполнении цикла в один прекрасный момент возникнет исключительная ситуация. При этом программа остановится, и отладчик переместит точку выполнения в метод Error.
Но мне и без того понятно, что исключение генерируется там. Меня больше интересуют предпосылки генерации :confused: . Как сделать так, чтобы отладчик указывал на строку "MyArray = i;"?
Может быть, существуют директивы, которые позволяют скомпилировать уже проверенные методы объектов без отладочных кодов - таким образом, отладчик не сможет сопоставить надёжный код с текстом, и перенесёт в интересующую нас функцию?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог