Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.08;
Скачать: CL | DM;

Вниз

Access violation   Найти похожие ветки 

 
Andrey V.   (2003-04-17 13:25) [0]

Программа нет-нет да и выкинет "Access violation at address"
и т.д.
Неприятно .
Какие есть пути для решения этой проблемы ?


 
Palladin ©   (2003-04-17 13:30) [1]

опыта побольше поднабратся... книжки почитать...
про отладку узнаешь... ошибки научишься искать...


 
Mike_Goblin ©   (2003-04-17 13:30) [2]

Видимо вы нет, нет да и обратитесь к несуществующему объекту через его переменную
посмотрите статьи, там был материал по поводу поиска таких ошибок


 
Goffman   (2003-04-17 13:36) [3]

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


 
Zelius ©   (2003-04-17 13:59) [4]

Надо создать экзешник с отладочной информацией ( с Debug DCU), поискать в нем адрес выдаваемый в сообщении по ошибке и проанализировать найденный код.


 
Digitman ©   (2003-04-17 14:40) [5]


> Andrey V.


Сообщение ведь в такой форме "Access violation at address XXXXXXXX ..." ?

Пересобери проект с опциями встроенной отладки, запусти на выполнение, открой меню "Search | Find Error ...", введи адрес XXXXXXXX - среда тебе с немалой вероятностью покажет модуль и строчку исх.текста в этом модуле, при выполнении которой ты раз за разом "наступаешь на грабли"


 
Andrey V.   (2003-04-17 15:30) [6]

Ok. Попробую.
А при "пересобирании" проекта адреса не меняются ?


 
Digitman ©   (2003-04-17 15:43) [7]


> Andrey V.


а тебя это не должно заботить !
ты же будешь запускать проект (для поиска ошибки таким способом) не автономно, а в среде - под встроенным отладчиком !

задача отладчика - синхронизировать номера строк с отладочной инф-цией, предусмотренной компилятором в DCU при сборке с опциями встр.отладки.

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


 
Anatoly Podgoretsky ©   (2003-04-17 17:17) [8]

Digitman © (17.04.03 14:40)
а также с немалой вероятностью покажет ошибку в системной DLL, даже с большей :-)
Опыт и написание программ без ошибок.


 
Andrey V.   (2003-04-18 08:36) [9]

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


 
Digitman ©   (2003-04-18 09:07) [10]


> Anatoly Podgoretsky



> с немалой вероятностью покажет ошибку в системной DLL


не спорю) ... но это же - тоже информация к размышлению ! и - немалая ! по ней зачастую можно выйти, скажем, на BPL и - в конечном итоге - на компонент, обращение к которому в конечном итоге вызвало проблемы с DLL-вызовами. А это уже - кое-что ! Была б голова на плечах)



> Andrey V



> прикол в том что


"Прикол" в том, что ты до сих пор не воспользовался рекомендацией по поиску отказа средствами встр.отладчика и не поделился результатами такого исследования.
И продолжаешь при этом бесплодно рассуждать о "странностях жизни" приложения !


 
Palladin ©   (2003-04-18 09:33) [11]


> о "странностях жизни" приложения !

:)

вернее сказать уже не жизни, а зарождения.


> Andrey V. (18.04.03 08:36)

есть в программировании такая вещь как ведение лога приложения, очень хорошо помогает... пиши лог в текстовый файл, что в твоей программе происходит... это самое простейшее и примитивное, что я тебе могу посоветовать...


 
Palladin ©   (2003-04-18 09:37) [12]

если конечно от того что сказал Digitman © (17.04.03 14:40) тебя корежит...
а если не вдумываешься в ответы, какой смысл просить помощь...


 
LEON   (2003-04-19 21:18) [13]

AV происходит, когда приложение пытается записать или прочитать данные в/из неразрешённую(ой) область(и) памяти, такое, чаще всего случается при неправильном вызове конструкторов, несвоевременном удалении объектов, конструкциях типа
MyString[IntegerGreaterThanLengthOfMyString], где из самого названия переменной ясно, что число больше чем длина строки, итд, итп. Пересмотри свою прогу на наличие таких глюков и похожих, может, выйдет


 
Думкин ©   (2003-04-21 07:30) [14]

Это одна из самых трудноуловимых ошибок в больших проектах.
В малых - тут было - неправильная работа с динамическими массивами и иже с ним. Тем боллее есть вероятность проскочить "на дурака", т.е. в некоторых сеансах твоя прога будет работать тип топ - а иногда нет.
Сейчас - надо проверить весь проект на наличие ОШИБОК.
Создание и освобождение объектов, массивы и т.д. Память в общем.
Ну что и сказано было.


 
MVova ©   (2003-04-21 08:38) [15]

Потоки используеш?

Поначалу такое трудно ловить, но со временем все ловится практически безпроблем. Самое трудное имитировать ошибку у себя, особенно если она то есть то нет.

Первое что надо делать, это бобится ошибки у себя, чтоб стабильно появлялать, а потом резать на корню ее :)

Очень сильно помогает адрес откуда был вызов.
> Digitman © (17.04.03 14:40)



 
Digitman ©   (2003-04-21 09:06) [16]


> LEON



> число больше чем длина строки


Пример с выходом индекса символа (при обращении к строке как массиву символов) за границы размерности массива не очень показателен в дан.случае, ибо далеко не всегда гарантированно вызовет AV-исключение. Связано это с особенностями работы конкретного менеджера памяти, который выравниваниет размер аллокируемого под строку блока памяти до значения, кратного степени двойки (это м.б. и 4 байта и 16 байт и ...).



Страницы: 1 вся ветка

Текущий архив: 2003.05.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
8-23235
Сергей
2003-01-30 14:00
2003.05.08
Propotional draw


14-23369
Marser
2003-04-15 22:46
2003.05.08
C++ Builder


1-23135
Rocker
2003-04-28 10:25
2003.05.08
сохранение графики в файл...


1-23102
lamak
2003-04-26 23:27
2003.05.08
Вопрос про шрифты


3-22997
Ruslan.
2003-04-16 19:44
2003.05.08
SQL запрос