|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2009, 06:19 | #1 |
Пользователь
Регистрация: 27.05.2009
Сообщений: 15
|
Ошибка Access Violation
Такой вопрос. У меня в проекте, совершенно неопреоделимо возникает ошибка Access Violation. Программа представляет собой управление устройствами через СОМ порт. "Посылка сообщения - прием сообщения - анализ сообщения - посылка нового сообщения - " и т.д. Посылка и прием сообщений происходят в двух потоках.
Подскажите. Как выловить где возникает данная пакость? |
02.06.2009, 06:46 | #2 |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Сделай брекпойнты (левее кода нажимаешь, появлятся красные маркеры) на которых программа будет останавливаться, можно будет посмотреть значения всех переменных. Хотя иногда при Access Violation Delphi сам ставит синим на больную строку...
|
02.06.2009, 07:01 | #3 |
Пользователь
Регистрация: 27.05.2009
Сообщений: 15
|
эти красные точечки (омг) не помагают. И синеньким ничто не подсвечивается. (опять таки омг)
Программа бывает работает час, а бывает и пять минут. Поэтому мне как-то сложно классифицировать место сбоя. Пытался ловить конструкцией try...except...end; Не помогло. |
02.06.2009, 08:03 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Смотреть нужно программу и отлаживать.
I'm learning to live...
|
02.06.2009, 08:38 | #5 |
Пользователь
Регистрация: 27.05.2009
Сообщений: 15
|
Ну а какие есть программные способы вылавливания этой ошибки?
|
02.06.2009, 08:55 | #6 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
они все программные, об аппаратных не слышал.
У встроенного дебагера есть вагон возможностей от watch lists до стандартных брейкпоинтов с просмотром состояний, стека, и т.д. 90% проблем решаеются клавишами F4,F7,F8
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
02.06.2009, 10:11 | #7 |
Пользователь
Регистрация: 27.05.2009
Сообщений: 15
|
Вот сейчас прога работает больше часа. Спецом сижу и жду возникновение ошибки. То есть если прикинуть то прога рабочая. Но по закону пакости стоит уйти и она крашнется, что вводит меня в некую прострацию. Спрашивается "какого...."? Прога работает по замкнутому циклу. И прошла его уже не раз. Но ошибка эта все равно возникает. Почему?
Есть какие-нибудь другие операторы наподобии try...except для локализации проблемного участка кода? |
02.06.2009, 10:40 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
02.06.2009, 10:48 | #9 | |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Цитата:
Try ... Except On <Класс1> do <Обработчик1> On <Класс2> do <Обработчик2> Else <Обработчик0> Используется для ЯВНОГО назначения обработчиков для каждого класса ошибок, при этом дожно быть соответствие классов ошибок и методов обработчика. Без блока обработчиков компилятор считает, что исключения могут быть любые. 2. Try ... Finally ... End; Используют если важно коректное завершение процесса с точки зрения ОС, а не с точки зрения процесса. Это протекция ресурсов при ошибочном выполнении. Предполагается, что эти блоки "молчат" при успехе, и выдают сообщения если не могут обработать исключение. 3. В связи с чем, просто вылет программы - это конфликты на уровне windows в памяти. Если драйверы (самописные?) ссорятся с программой, например. Debug -> Modules занимается отладкой взаимодействия с модулями. Но я в этом не разбираюсь - там на низком уровне всё... 4. Win-Api функции часто сигнализируют об успешном/провальном выполнении. Если есть цепочка таких функцый 1-2-3-4... и где нибудь не устроить проверку на успешное выполнение, то дальше будут тащится неполные данные и последующие функции могут несработать... 5. Еще: можно сделать приложение, которое в реальном времени вызывает GetLastError и на этой основе делает лог ошибок (есть ещё функция перевода ИД ошибки в текст, забыл). Последний раз редактировалось BaronTreep; 02.06.2009 в 11:08. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
access violation at address | UnChanter | Общие вопросы Delphi | 22 | 07.02.2011 11:00 |
Access Violation | SunKnight | Общие вопросы Delphi | 2 | 05.06.2008 16:46 |
Access violation at address.. | RegentM | Общие вопросы Delphi | 4 | 01.11.2007 03:46 |
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. | Fen1x | Общие вопросы Delphi | 8 | 13.10.2007 20:13 |
Access Violation | Carbon | Общие вопросы Delphi | 12 | 18.09.2007 19:55 |