Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибки бояться дебаггера 
V
    Опции темы
d06osipov
Дата 7.9.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Когда я запускаю программу с GDB (или откомпилированную для Debug в Visual Studio) она работает нормально. Ошибки (неправильная работа --- заезжание на чужую память и т. п.) начинаются только когда программа запущена без отладчика --- отследить их в этом случае затруднительно. Самое интересное, что программа использует исключительно стандартные средства. Может у кого нибудь есть информация о том, как может меняться поведение программы при запуске с отладчиком и без?
PM MAIL   Вверх
UnrealMan
Дата 7.9.2007, 21:32 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Велика вероятность того, что имеет место некорректное обращение с памятью - в смысле логически программа написана неверно (допускается выход за границы массива, разыменование невалидных указателей и т.д.). Такие ошибки как раз могут приводить к глюкам или падению программы в одних случаях и быть незаметными в других... И дело тут не обязательно в отладчике. Возможно, при запуске на другом компе твоя прога упадёт и в дебаге.

Это сообщение отредактировал(а) UnrealMan - 7.9.2007, 21:41
PM MAIL   Вверх
d06osipov
Дата 7.9.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да, но при использовании отладчика, ничего подобного не проявляется. Как может отладчик влиять на выполнение программы, которая не использует ничего, кроме <stack>, <list>, <assert.h>, <fstream> и <iostream>.
PM MAIL   Вверх
UnrealMan
Дата 7.9.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да влиять может что угодно. Ошибки с памятью характерны непредсказуемостью своего проявления. Помню случай, когда одна прога месяцами успешно работала на одном компе, а при переносе на другой комп завалилась при первом же запуске smile
PM MAIL   Вверх
bsa
Дата 7.9.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



d06osipov, такое поведение еще возможно, когда у тебя какие-нибудь локальные указатели не инициализируются перед использованием. В режиме отладки они могут автоматически инициализироваться 0, а в релизе нет.
PM   Вверх
dizzy1984
Дата 10.9.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Кроме того, отладчик может расставлять данные в памяти не так, как будет в релизе, скажем, в релизе некоторые переменные могут быть помещены в регистры.
Вообще релиз и дебаг версия много чем различаются.

Это сообщение отредактировал(а) dizzy1984 - 10.9.2007, 10:19
PM MAIL   Вверх
jonie
Дата 10.9.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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





--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
SaDFromSpb
Дата 11.9.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



d06osipov, под линух есть очень мощная штука. Valgrind  называется. Она показывает абсолютно любые баги с памятью (включая предполагаемые утечки). К ней еще желательно графическую обертку Valkyrie поставить. Поищи на эту тему. Меня не раз выручала.
Правда там с настройками слегка попариться придется.


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
bsa
Дата 11.9.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



SaDFromSpb, я пользую следующие: valgrind --tool=memcheck -v --leak-check=full --log-file=filename.log ./program
PM   Вверх
d06osipov
Дата 12.9.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем спасибо, причина найдена. Часть памяти высвобождалась, или нет в зависимости от значения булевой переменной, которую я забыл инициализировать. Надо сказать, что мне повезло, потому как память на самом деле должна была высвобождаться при правильной работе, однако, при этом давала знать о себе следующая ошибка, так что программа работала неправильно и с дебагером, что мне удалось заметить. 

SaDFromSpb. У меня, к сожалению, Windows, правда с Cygwin. 

Это сообщение отредактировал(а) d06osipov - 12.9.2007, 18:14
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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