| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > MS VS 8 |
| Автор: FelikZ 11.7.2007, 14:31 |
| Код программы большой, поэтому выложить не смогу... Запускаю в визуал студии через F5 - программа работает как надо, запускаю через Ctrl+F5 летит к бабушке в Израиль... Был уже когда-то такой глюк поборол методом комментирования всего и вся, но может кто подскажет как это можно вылечить более цивилизованным путем? |
| Автор: GGoga 11.7.2007, 15:33 | ||
Глюк дебага в Студие - это знакомый случай. У меня, например, дебаг в 75% случаев вообще не запускается! Данную проблему решаю переустановкой студии... Знаю это не выход, но для меня 10 минутная переустановка гораздо выгоднее, чем неограниченно затраченное время на поиск и устранение ошибки (или поиск необходимого пункта в большем количестве настроек). Подобного рода вопросы я задавал на многих форумах, но так конкретного ответа и не получил... :( Так что попробуй полностью переустановить Студию и запустить свой проект снова, если ошибка вновь обнаружится, то, скорее всего, это какой-то конфликт в системе... А вообще было бы и самому интересно найти метод решения проблемы работы дебага в Студие. |
| Автор: JUmPER 11.7.2007, 15:34 |
| в vc6 такая же фигня есть |
| Автор: Earnest 11.7.2007, 17:52 |
| Ну, я бы сказала, что это не глюк среды, а глюк в программе: в среде работает, вне среды - нет. Особенно приятно когда такое дело с релизом. Метод расстановки контрольных точек для локализации ошибки - вполне разумен. Только мессаж-бокс не лучший вариант, он все таки нарушает поток управления: вешает свой модальный цикл и прочая. Т.е. иногда может помешать обнаружить ошибку. Я использую трассировочные сообщения: в дебаге просто TRACE, в релизе - OutputDebugString. Пишем 1, 2, 3 или можно переменные какие распечатать... Предваряя вопрос, как это дело видеть, если запускаем вне среды. На это есть чудесная утилита DebugView, взятая http://www.sysinternals.com. Просто запускаем ее, потом свой процесс и смотрим, что вывелось, что нет. |
| Автор: Nastya 11.7.2007, 18:27 |
| Кстате, никто не забрещает создавть Release + *.pdb с отладочной информацией - тогда все можно отлаживать как в дебаге |
| Автор: FelikZ 11.7.2007, 18:38 |
дело в том, что моя ошибка ваще какаето глупая, когда вылетает окошко студии, что в приложении обнаружена ошибка, жмем дебаг и в отгрывшийся студии показывается место где ошибка физически быть неможет.... |
| Автор: Nastya 12.7.2007, 09:33 |
| FelikZ, не берусь судить не видя ситуации, но такое может быть, когда кто-то порушил стек или кучу. |
| Автор: FelikZ 12.7.2007, 13:55 |
| Nastya, вылетал оператор "new".... фиг знает почему... проверил конструктор класса, который создавал, туда даже не доходило... Ну вобщем перенес этот new и все стало на места |
| Автор: dumb 12.7.2007, 14:04 |
| значит между тем местом, где этот new находился до переноса, и тем, где он нах-ся сейчас(хотя это не стопудово - может где-то раньше), есть что-то, что портит кучу. типа char *a = new char[10]; memset(a,0,100); |
| Автор: FelikZ 12.7.2007, 14:28 | ||
dumb, есть такое:
это может быть оно? больше ничего с памятью там нету... |
| Автор: JUmPER 12.7.2007, 14:37 |
| онаж затирает пару указателей нулями. если ж потом по ним обращаться или делать delete... |
| Автор: bilbobagginz 12.7.2007, 21:47 |
| спасибо Earnest, и я теперь бадяг вью. |