Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Странная ошибка в программе


Автор: Kolia 2.3.2009, 13:29
Проект MSVS 6.0
Старый, делать миграцию в MSVS поновее не получится никак: куча ероров (простых). Программа старая, работает как часики, так что никто не даст добро на эту миграцию с последущим полным тестированием.


Код
Код

long CHLRINDataV4::DeleteCamelOriginatingService(CString imsi, CString msisdn)
{
    INDELETECAMELDATA_S l_DeleteCamelDataIn;
    error_t l_Status;

//    EmiHLRINData::HLRINData_V4::TCsiDpOpt_s t_csi_nbr;
//    EmiHLRINData::HLRINData_V4::OCsiDpOpt_s o_csi_nbr;
//    EmiHLRINData::HLRINData_V4::TCsiDpOpt_s vt_csi_nbr;

    //    initialize structure's required parameters
    this->GetDefaultDeleteCamelDataStruct(l_DeleteCamelDataIn);
    l_DeleteCamelDataIn.options.o_csi = true;

    l_DeleteCamelDataIn.imsi = this->FormatImsi(imsi);
    l_DeleteCamelDataIn.msisdn = this->FormatMsisdn(msisdn);

    //    delete
    l_Status = this->DeleteCamelDataSynch(l_DeleteCamelDataIn);
    
    //    check status
    this->CheckStatus(l_Status);

    return l_Status;
}


Описание:
Структура INDELETECAMELDATA_S содерхит данные об услугах, которые надо выключить. Метод GetDefaultDeleteCamelDataStruct заполняет эту структуру дефолтными значениями: ставятся флаги FALSE на всех услугах (не надо выключать).
В строке 12 указывается услуга, которую надо выключитью
В 18 строке вызывается метод, который выполняет отключение услуг на основе данных структуры INDELETECAMELDATA_S. В данном случае только одной.
Для информации, отключение происходит на удаленном сервере восредством CORBA'ы.

Проблема:
Услуга не отключается. Можно конечно в меня кидать камни, что что-то коряво и т. п.  Я собственно так же думал... Но есть строки 6, 7, 8. Если их откоментировать, то все работает!!! А это просто декларация структур. В структуре INDELETECAMELDATA_S есть поля этих типов, но я ведь им не присваиваю значений структур из строк 6, 7, 8...


Кто может сказать, что это за мистика, хотя мистики тут быть не может. Должно быть какое-то объяснение smile Компилил, проверя ни один раз: коментарии ставлю - не работает, коментарии убираю - работает...

Автор: Earnest 2.3.2009, 14:37
1) В дебаге? По шагам пройди и посмотри, как память меняется (с и без комментариев). 
2) Посмотри код ассемблера.

Ясно одно: раз ситуация меняется после раскомментирования объявлений переменный, значит, какой-то косяк со стеком.
Вроде были у меня такие ситуации, только не в 6ке, а раньше...

Автор: Kolia 2.3.2009, 16:47
Цитата(Earnest @ 2.3.2009,  14:37)
1) В дебаге? По шагам пройди и посмотри, как память меняется (с и без комментариев). 
2) Посмотри код ассемблера.

Ясно одно: раз ситуация меняется после раскомментирования объявлений переменный, значит, какой-то косяк со стеком.
Вроде были у меня такие ситуации, только не в 6ке, а раньше...

1. С дебагом проблемы. Доступ с нужному серваку сильно ограничен. Если честно, даже лень разбираться как это дело организровать  smile А начальство говорит "Делай чтоб работало, а заморочки и вопросы 'почему' не бери во внимание"  smile 
2. Проверю

Автор: 0xDX 3.3.2009, 22:46
Добавь логи

Автор: Earnest 4.3.2009, 17:50
Цитата(Kolia @  2.3.2009,  17:47 Найти цитируемый пост)
А начальство говорит "Делай чтоб работало, а заморочки и вопросы 'почему' не бери во внимание" 

Такие мины могут вылезти и позднее, и так, что не понятно будет откуда ноги растут. Начальству, оно, коненшно, виднее, но кто волосы на лысине рвать будет, когда мистика попрет? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)