Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
1-23150
ЮРИЙ_К
2003-04-24 12:33
2003.05.08
Как продублировать Text-ы дерева в Label ???


14-23320
Некто2002
2003-04-18 20:35
2003.05.08
XP, showmessage и


14-23370
Andrey
2003-04-21 14:03
2003.05.08
Программирование и остеохандропатический кифоз


1-23218
Leo-prog
2003-04-25 13:19
2003.05.08
Доступ к программам


11-23049
_Avenger_
2002-07-30 22:41
2003.05.08
Applet





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский