Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отладка, Проблема с отладкой 
:(
    Опции темы
Aline
Дата 10.10.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Привет всем!
Такая проблема: ставлю в программе точку останова, но при отладке влетает не в исходник (*.cpp), а открывается окно CPU. Я там мало что понимаю. Как этого избежать? Причем интересно, что именно в этой процедуре отладчик так себя ведет. В других процедурах всё нормально. Что можно сделать?
PM MAIL   Вверх
Romikgy
Дата 10.10.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



закрыть окно цпу
а вообще видать имхо идет ошибка на уровне системы, вот и вываливает асм


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Aline
Дата 11.10.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Romikgy, 
закрыть окно CPU  - не выход, оно всё равно открывается
PM MAIL   Вверх
Romikgy
Дата 11.10.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Aline, значит ошибка довольно критичная


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kuvaldis
Дата 11.10.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Aline, 
кинь кусок кода, в котором вылетает окно CPU. (будем искать ошибку)


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Aline
Дата 12.10.2006, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



На форме расположен PageControl с несколькими закладками и Chart, ниже обработчик при переключении закладок. Раньше там ничего не вылетало.

Код

void __fastcall TMainForm::tcSignalsChange(TObject *Sender)
{
  _diXMLDoc->Active = true;
  _di_IXMLNode Chapter = _diXMLDoc->DocumentElement;

  if (Chapter->ChildNodes->Count > 0){

      CheckListBox1->Clear();
      while (Chart1->SeriesCount()>0) delete (Chart1->Series[Chart1->SeriesCount()-1]);

      for (int j = 0; j<MaxSignSet; ++j)
        if (Signals[tcSignals->TabIndex][j].Index!=0xFFFF) {
          CheckListBox1->Items->Add(Signals[tcSignals->TabIndex][j].Caption);
          CheckListBox1->Checked[CheckListBox1->Items->Count-1] = Signals[tcSignals->TabIndex][j].flGroup;
          Series = new TLineSeries(this);
          Chart1->AddSeries(Series);
          Chart1->Series[j]->SeriesColor = clTeeColor;
          Chart1->Series[j]->Name = Signals[tcSignals->TabIndex][j].Caption;

          Ampl = Signals[tcSignals->TabIndex][j].Amplitude;
          Fi = Signals[tcSignals->TabIndex][j].InitialPhase;
          T = Signals[tcSignals->TabIndex][j].Period*100000;
          float d = Signals[tcSignals->TabIndex][j].DepthMod;

          Chart1->Series[j]->Clear();
          Chart1->Series[j]->SeriesColor = (Signals[tcSignals->TabIndex][j].Status != 0) ? clBtnFace : Signals[tcSignals->TabIndex][j].ColorSign;

          __int64 del = Signals[tcSignals->TabIndex][j].InitialPhase*100000;
          double y;
          float Umax = koef;
          float Umin = -koef;
          __int64 x0 = t1;

          double x;

          switch (Signals[tcSignals->TabIndex][j].Wave){
            case wfSin : { //синус
                      if (T > 0) {
                          t_i = t1;
                          for (int n = 0; n<L; ++n){
                            Chart1->Series[j]->AddXY(n, koef*sin(2*M_PI*(t_i/T + Fi/360)) + (190-10*(j+1)),"", clTeeColor);
                            Chart1->Series[j]->XLabel[n] = SetTime(t_i);
                            t_i += dt;
                          }
                      }
                      break;}
            case wfConst : { //постоянный
                      t_i = t1;
                      for (int n = 0; n<L; ++n){
                        Chart1->Series[j]->AddXY(n,koef + (190-10*(j+1)),"", clTeeColor);
                        Chart1->Series[j]->XLabel[n] = SetTime(t_i);
                        t_i += dt;
                      }
                      break;}
            case wfTriangle :  {//треугольник
                      __int64 del = Signals[tcSignals->TabIndex][j].InitialPhase*100000;
                      double y;

                      if (T > 0) {
                          t_i = t1+del;

                          div_t x = div(t_i,T);
                          __int64 x0 =  T*x.quot;

                          for (int n = 0; n<L; ++n){
                            if ((t_i>=x0)&&(t_i<=(x0+T/2))){
                              y = (Umax-Umin)*t_i/(T/2)-x0*(Umax-Umin)/(T/2)+Umin;
                            }
                            else if ((t_i>(x0+T/2))&&(t_i<=(x0+T))) {
                              y = -(Umax-Umin)*t_i/(T/2)+(x0+T)*(Umax-Umin)/(T/2)+Umin;
                            }

                            if (t_i >= (T+x0)) x0 += T;

                            Chart1->Series[j]->AddXY(n, y + (190-10*(j+1)),"", clTeeColor);
                            Chart1->Series[j]->XLabel[n] = SetTime(t_i);
                            t_i += dt;
                          }
                      }
                      break;}
            case wfSaw :  {//пила
                      T = Signals[tcSignals->TabIndex][j].Period*100000;
                      __int64 del = Signals[tcSignals->TabIndex][j].InitialPhase*100000;

                      if (T >0) {
                          t_i = t1+del;
                          div_t x = div(t_i,T);
                          __int64 x0 =  T*x.quot;

                          double y;

                          for (int n = 0; n<L; ++n){
                            y = (Umax-Umin)*t_i/T-x0*(Umax-Umin)/T+Umin;

                            if (t_i >= (T+x0)) x0 += T;

                            Chart1->Series[j]->AddXY(n, y + (190-10*(j+1)),"", clTeeColor);
                            Chart1->Series[j]->XLabel[n] = SetTime(t_i);

                            t_i += dt;
                          }
                      }
                      break;}
            case wfDiscret : { //дискретный
                        TLineSeries *Ser;
                        Ser = (TLineSeries*)Chart1->Series[j];
                        Ser->Stairs = true;
                        T = Signals[tcSignals->TabIndex][j].Period*100000;

                        if (T > 0) {
                            t_i = t1;
                            div_t x = div(t1,T);
                             x0 =  T*x.quot;
                            __int64  t = t_i - x0;
                            int y1;

                            for (int n = 0; n<L; ++n){
                              if ((t_i>=x0)&&(t_i<=(x0+T))){
                                y1 = SetY(t, tcSignals->TabIndex, j);
                                if (y1 != 1) y1 = -1;
                              }
                              else y1 = -1;
                              Chart1->Series[j]->AddXY(n, y1*koef + (190-10*(j+1)),"", clTeeColor);
                              Chart1->Series[j]->XLabel[n] = SetTime(t_i);

                              if (t_i >= (T+x0)) {
                                x0 += T;
                                t = 0;
                              }
                              t_i += dt;
                              t += dt;

                            }
                        }
                       break; }
                case wfModExp :  {//экспонента
                       __int64 del = Signals[tcSignals->TabIndex][j].InitialPhaseMod*100000;
                       T = Signals[tcSignals->TabIndex][j].PeriodMod*100000;
                       float TimeConst = Signals[tcSignals->TabIndex][j].TimeConst*100000;

                       if (T > 0) {
                           t_i = t1+del;
                           div_t x1 = div(t_i,T);
                           __int64 x0 =  T*x1.quot;

                           double y;
                           double x;
                           for (int n = 0; n<L; ++n){
                             if ((t_i>=x0)&&(t_i<(x0+T))){
                               x = (t_i - x0);
                               y = d*(1 - exp(-x/TimeConst));
                             }
                             else y = 0;

                             if (t_i >= (T+x0)) {
                               x0 += T;
                             }
                             Chart1->Series[j]->AddXY(n, koef*y + (190-10*(j+1)),"", clTeeColor);
                             Chart1->Series[j]->XLabel[n] = SetTime(t_i);
                             t_i += dt;
                           }
                       }
                       break;}
              case wfModSin : { //синус
                      Ampl = Signals[tcSignals->TabIndex][j].AmplitudeMod;
                      Fi = Signals[tcSignals->TabIndex][j].InitialPhaseMod;
                      T = Signals[tcSignals->TabIndex][j].PeriodMod*100000;
                      t_i = t1;
                      if (T > 0) {
                          for (int n = 0; n<L; ++n){
                            Chart1->Series[j]->AddXY(n, koef*sin(2*M_PI*(t_i/T + Fi/360))+ (190-10*(j+1)),"", clTeeColor);
                            Chart1->Series[j]->XLabel[n] = SetTime(t_i);
                            t_i += dt;
                          }
                      }
                      break;}
              case wfImpSaw : {
                      T = Signals[tcSignals->TabIndex][j].PeriodMod*100000;
                      __int64 del = Signals[tcSignals->TabIndex][j].InitialPhaseMod*100000;
                      
                      if (T >0) {
                          t_i = t1+del;
                          div_t x = div(t_i,T);
                          __int64 x0 =  T*x.quot;

                          double y;

                          for (int n = 0; n<L; ++n){
                            y = (Umax-Umin)*t_i/T-x0*(Umax-Umin)/T+Umin;

                            if (t_i >= (T+x0)) x0 += T;

                            Chart1->Series[j]->AddXY(n, y + (190-10*(j+1)),"", clTeeColor);
                            Chart1->Series[j]->XLabel[n] = SetTime(t_i);

                            t_i += dt;

                          }
                      }
                      break;}
                case wfImpExp :  {//экспонента
                       __int64 del = Signals[tcSignals->TabIndex][j].InitialPhaseMod*100000;
                       T = Signals[tcSignals->TabIndex][j].PeriodMod*100000;
                       float TimeConst = Signals[tcSignals->TabIndex][j].TimeConst*100000;

                       if (T > 0) {
                           t_i = t1+del;
                           div_t x1 = div(t_i,T);
                           __int64 x0 =  T*x1.quot;

                           double y;
                           double x;
                           for (int n = 0; n<L; ++n){
                             if ((t_i>=x0)&&(t_i<(x0+T))){
                               x = (t_i - x0);
                               y = d*(1 - exp(-x/TimeConst));
                             }
                             else y = 0;

                             if (t_i >= (T+x0)) {
                               x0 += T;
                             }
                             Chart1->Series[j]->AddXY(n, koef*y + (190-10*(j+1)),"", clTeeColor);
                             Chart1->Series[j]->XLabel[n] = SetTime(t_i);
                             t_i += dt;
                           }
                       }
                       break;}
          }

          for (int i = 0; i < L; i++) {
            if (Chart1->Series[j]->XLabel[i].Pos("-") > 0){
              Chart1->Series[j]->XLabel[i]  = "";
              Chart1->Series[j]->ValueColor[i] = clBtnFace;
            }
          }

          Chart1->LeftAxis->Automatic = false;
          Chart1->BottomAxis->Automatic = false;
          Chart1->BottomAxis->Minimum = 0;
          Chart1->BottomAxis->Maximum = L;
      }
  }
}


Добавлено @ 07:48 
Проблема с вот этим куском (я его добавляла последним, без него всё нормально работает):
Код

for (int i = 0; i < L; i++) {
  if (Chart1->Series[j]->XLabel[i].Pos("-") > 0){
    Chart1->Series[j]->XLabel[i]  = "";
    Chart1->Series[j]->ValueColor[i] = clBtnFace;
  }
}

PM MAIL   Вверх
Aline
Дата 12.10.2006, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



В принципе я сделала то, что мне нужно другим способом, так что ошибку можно искать только ради интереса
PM MAIL   Вверх
FFFFFFF7
Дата 13.10.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.10.2006

Репутация: 2
Всего: 2



Цитата(Aline @  10.10.2006,  14:23 Найти цитируемый пост)
 ставлю в программе точку останова, но при отладке влетает не в исходник (*.cpp), а открывается окно CPU

возможно, ошибка просто до точки останова. Вот и всё. Что хоть в сообщении об ошибке? Обращение к участку памяти,  поди?=))))
--------------------
Да помоги кодеру, а значит - ближнему своему!
PM MAIL   Вверх
Aline
Дата 13.10.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



FFFFFFF7, 
а нету сообщения об ошибке :-)
просто в CPU вылетало во время отладки, причем в другом месте, тот же самый кусок работает нормально 
PM MAIL   Вверх
FFFFFFF7
Дата 13.10.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.10.2006

Репутация: 2
Всего: 2



Aline,  вот вылетело окно. Потом Ф9 и ... (??) Программа завершает работу | вылетает сообщение | продолжается работа программы и ни каких сообщений вообще? 
--------------------
Да помоги кодеру, а значит - ближнему своему!
PM MAIL   Вверх
Aline
Дата 18.10.2006, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



FFFFFFF7,
сообщение не вылетало, т.е. вообще не вылетало, и по Ф9 продолжалась работа
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.