![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
dxdash |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.12.2014 Репутация: нет Всего: нет |
Добрый день!
Никогда не имел дела с Borland C++ Builder, и вот озадачили: Есть программа, скомпилированная в Borland C++ Builder 6. Программа работала на двух практически идентичных компьютерах. На одном из них вышел из строя жёсткий диск. Диск заменили, поставили Windows 2000, Borland C++ Builder 6, скопировали папку с программой из работающей системы. В результате программа постоянно выкидывает ошибку CodeGuard. Исходники программы есть, но только более ранней версии. Для проверки запустил их в режиме отладки на обоих системах. На работающей всё заработало, а на второй опять ошибка CodeGuard. Ошибка связана с неправильным освобождением памяти, но это не критично, т.к. в таком варианте программа работает уже более 10 лет, а программиста, который её писал, никак не найти. Почему первая система не выдаёт ошибки и как сделать, чтобы и вторая система также её пропускала? Повторюсь, что актуальных исходников нет, соответственно решение должно быть на уровне системы. Заранее благодарю. P.S. Кажется я поторопился и создал тему не в том разделе. Прошу модератора перенести её в соответствующий раздел. Спасибо. Это сообщение отредактировал(а) dxdash - 25.12.2014, 15:53 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Отдавать программу с включенным CodeGuard это очень плохая идея. CodeGuard используется для проверки ошибок работы с памятью. При этом скорость работы заметно падает. Например он принудительно заполняет память значениями отличными от нуля. Чтобы убрать ошибки CodeGuard нужно его просто отключить в опциях компилятора С++ Compiler ->Debugging . Его нужно включать только на время. После окончания отладки отключать.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
dxdash |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.12.2014 Репутация: нет Всего: нет |
Это всё понятно. А всё таки что можно сделать в сложившейся ситуации?
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Проанализировать текст ошибки. Посмотреть исходный код, место куда указывает CodeGuard. Выяснить является ли ошибка ошибкой или это ложное срабатывание CodeGuard. Этот инструмент часто дает ложные ошибки, а иногда и вовсе влияет на логику программы так что она перестает запускаться. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
dxdash |
|
||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.12.2014 Репутация: нет Всего: нет |
Как я писал в первом сообщении - это действительно ошибка:
вместо delete[] TmpBuf; Задача не в том, чтобы исправить программу (актуальных исходников нет), а в том, чтобы заставить её работать (раньше она работала). Железо (за исключением нового жёсткого диска) и программа на обоих компах одинаковые. Отличия могут быть только в системе (версии DLL-библиотек, реестр или ещё чего). |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Я знаю только один правильный способ чтобы заставить ее работать. Это исправить машинные коды, так чтобы освобождение производилось корректно. Все остальные способы это русская рулетка. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
http://www.backslash.com.au/products/bcb5-...G-CodeGuard.pdf страница 2 внизу (Codeguard configuration tool)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |