powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / Включить CodeGuard и найти Access Vioaltion
15 сообщений из 15, страница 1 из 1
Включить CodeGuard и найти Access Vioaltion
    #38680420
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
О себе:) : Win7, C++ Builder XE3, AsyncPro.

Столкнулся со следующей проблемой:
Есть проект, который в среде разработки запускается только 1 раз:). То есть если в нём хоть что-то изменить (просто добавить пробел) - то, после сборки, программа вылетает на Access Violation сразу же. До Application->Initialize() и FormCreate-ов всяких. При чем вылетает не на строке кода, а на вкладке CPU с кучей ассемблера. Но, стоит сделать Project->Clean и Project->Build - проект нормально запускается. Правда опять же, до первых изменений кода.

Хотел я было посмотреть логи CodeGuarda - но файлика *.cgl не нашел.. Хотя Project->Options->С++ Compiller->Debugging->Enable_CodeGuard в true выставлен и Tools->CodeGuard_Configuration тоже в Enabled.

Кода не выкладываю, потому что не знаю какой фрагмент нужен.. Ошибка вылетает до брэйкпоинтов.. Если какой фрагмент кода или другая какая инфа нужна для решения вопроса - дополню.

Помогите пожалуйста разобраться с КодГуардом и этим аксесвиолэшином..

Заранее спасибо!
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38680422
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опытным путем установлено, что глюк с Access Violation пропадает, если включить EurikaLog. И появляется вновь, если её отключить...
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38680423
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Project->Clean не помогает - надо значит пойти в те каталоги и физически вычистить все что не нужно.
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38680424
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как раз нет. Project->Clean помогает, но без него нельзя изменить код. То есть если дописал "int a = 0", то без Project->Clean будет Access Violation. По-моему так быть не должно..
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38680436
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никаких мыслей?:(
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38680665
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KasKasДо Application->Initialize() и FormCreate-ов всяких.
До них отрабатывают секции initialization у VCL и конструкторы глобальных объектов.

KasKasПри чем вылетает не на строке кода, а на вкладке CPU с кучей ассемблера.
Вот и смотри что делает этот ассемблер и как управление туда попало (Use Call Stack
Window, Luke).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38681370
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДо них отрабатывают секции initialization у VCL и конструкторы глобальных объектов.

А как в них брэйкпоинты ставить?:)

Dimitry SibiryakovВот и смотри что делает этот ассемблер и как управление туда попало (Use Call Stack
Window, Luke).

Вот скриншот
http://i031.radikal.ru/1406/58/d42199ab688a.jpg

Стало понятно куда смотреть. Но что дальше делать - не ясно=)
Пока гуглю про __delayLoadHelper2 ...


ps А по включению кодгуарда нет мыслей?
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38681421
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KasKas,
1) тебе надо понять, что все твои предположения о причинах ошибки ложны.
2) тебе скорее всего не нужен никакой кодегуард или что то еще, хватит простого отладчика и чтения текста программы.
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38681435
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv1) тебе надо понять, что все твои предположения о причинах ошибки ложны.
ну допустим..
в принципе логично, что initialization у VCL и конструкторы глобальных объектов править надо вряд ли:)

MasterZiv2) тебе скорее всего не нужен никакой кодегуард или что то еще, хватит простого отладчика и чтения текста программы.
А как найти в тексте ошибку, когда до исполнения текста очередь не доходит? И ошибка странным образом исчезает, при подключении EurekaLog?
Подскажите пожалуйста кто-нибудь конкретнее что где и как смотреть/делать..

И кодгуард мне нужен.. Если не в этой ситуации, то вцелом, для поиска утечек памяти, не удаленных динамически созданных объектов и тд - он ну очень полезен! А сейчас я его наличия даже на только что созданном объекте не замечаю..
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38681436
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, Кодгуард же встроенный в си, он не сторонний продукт.
Так, на всякий случай уточняю:)
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38681749
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 27.06.2014 10:05, KasKas wrote:

> А как найти в тексте ошибку, когда до исполнения текста очередь не
> доходит? И ошибка странным образом исчезает, при подключении EurekaLog?

Это -- случайность. Либо она исчезат случайно, либо, скорее всего, она
просто не проявляется, но не исчезает. А где будет проявляться --
неизвестно.

На самом деле очень хорошо, что ошибка проявляется. Запомни конфигурацию
того случая, когда она проявляется.

> Подскажите пожалуйста кто-нибудь конкретнее что где и как смотреть/делать..

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

Далее пойти по стеку вниз, от main, и смотреть, где есть твой код.
Последнее место, где есть твой код будет первым кандидатом на
рассмотрение на предмет поиска ошибки.

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

Это естественно только первые точки, куда надо смотреть.

Исходный код может быть не виден (как ты вроде бы писал) по двум причинам:
-- его нет, т.е. это системный или библиотечный код
-- он есть, но в программе нет доступной для отладчика отладочной
информации, или она кривая (левая, испорченная, старая).

Проверь что debug info есть, и добейся, чтобы оно было всегда при
отладке правильное и актуальное.


> И кодгуард мне нужен.. Если не в этой ситуации, то вцелом, для поиска


Я за всю свою долгую карьеру ни разу не использовал ни одной хрени с
таким или похожим названием, стало быть, вероятно, и тебе он не нужен.

> утечек памяти, не удаленных динамически созданных объектов и тд - он ну
> очень полезен! А сейчас я его наличия даже на только что созданном
> объекте не замечаю..

Твоя ошибка вряд ли вызвана утечками памяти.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38681751
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Да, Кодгуард же встроенный в си, он не сторонний продукт.
> Так, на всякий случай уточняю:)

Ни в какой С он не встроен. Он может быть встроен в этот ваш Builder.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #38681820
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KasKasА как найти в тексте ошибку, когда до исполнения текста очередь не доходит? И
ошибка странным образом исчезает, при подключении EurekaLog?
Во-первых, CodeGuard сам может падать с AV если в системных каталогах завалялся несвежий
borlndmm.dll.
Во-вторых, EurekaLog может перехватывать те же функции управления кучей и тем самым просто
вырубать CG к ЧМ. Отчего он, естественно, перестаёт падать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Включить CodeGuard и найти Access Vioaltion
    #40087706
Pumpkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KasKas
Здравствуйте.
Столкнулся со следующей проблемой:
Есть проект, который в среде разработки запускается только 1 раз:). То есть если в нём хоть что-то изменить (просто добавить пробел) - то, после сборки, программа вылетает на Access Violation сразу же. До Application->Initialize() и FormCreate-ов всяких. При чем вылетает не на строке кода, а на вкладке CPU с кучей ассемблера. Но, стоит сделать Project->Clean и Project->Build - проект нормально запускается. Правда опять же, до первых изменений кода.


KasKas

Стало понятно куда смотреть. Но что дальше делать - не ясно=)
Пока гуглю про __delayLoadHelper2 ...


Спустя столько лет, я нашел решение:
Disable incremental link option in Project > Options > C++ Linker.
...
Рейтинг: 0 / 0
Включить CodeGuard и найти Access Vioaltion
    #40089152
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pumpkin, не быстро... :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Включить CodeGuard и найти Access Vioaltion
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]