|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
Здравствуйте. О себе:) : 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. Кода не выкладываю, потому что не знаю какой фрагмент нужен.. Ошибка вылетает до брэйкпоинтов.. Если какой фрагмент кода или другая какая инфа нужна для решения вопроса - дополню. Помогите пожалуйста разобраться с КодГуардом и этим аксесвиолэшином.. Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 04:15 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
Опытным путем установлено, что глюк с Access Violation пропадает, если включить EurikaLog. И появляется вновь, если её отключить... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 04:24 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
Если Project->Clean не помогает - надо значит пойти в те каталоги и физически вычистить все что не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 04:38 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
Как раз нет. Project->Clean помогает, но без него нельзя изменить код. То есть если дописал "int a = 0", то без Project->Clean будет Access Violation. По-моему так быть не должно.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 04:42 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
Неужели никаких мыслей?:( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 07:00 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
KasKasДо Application->Initialize() и FormCreate-ов всяких. До них отрабатывают секции initialization у VCL и конструкторы глобальных объектов. KasKasПри чем вылетает не на строке кода, а на вкладке CPU с кучей ассемблера. Вот и смотри что делает этот ассемблер и как управление туда попало (Use Call Stack Window, Luke). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2014, 11:54 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДо них отрабатывают секции initialization у VCL и конструкторы глобальных объектов. А как в них брэйкпоинты ставить?:) Dimitry SibiryakovВот и смотри что делает этот ассемблер и как управление туда попало (Use Call Stack Window, Luke). Вот скриншот http://i031.radikal.ru/1406/58/d42199ab688a.jpg Стало понятно куда смотреть. Но что дальше делать - не ясно=) Пока гуглю про __delayLoadHelper2 ... ps А по включению кодгуарда нет мыслей? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2014, 02:18 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
KasKas, 1) тебе надо понять, что все твои предположения о причинах ошибки ложны. 2) тебе скорее всего не нужен никакой кодегуард или что то еще, хватит простого отладчика и чтения текста программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2014, 08:32 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
MasterZiv1) тебе надо понять, что все твои предположения о причинах ошибки ложны. ну допустим.. в принципе логично, что initialization у VCL и конструкторы глобальных объектов править надо вряд ли:) MasterZiv2) тебе скорее всего не нужен никакой кодегуард или что то еще, хватит простого отладчика и чтения текста программы. А как найти в тексте ошибку, когда до исполнения текста очередь не доходит? И ошибка странным образом исчезает, при подключении EurekaLog? Подскажите пожалуйста кто-нибудь конкретнее что где и как смотреть/делать.. И кодгуард мне нужен.. Если не в этой ситуации, то вцелом, для поиска утечек памяти, не удаленных динамически созданных объектов и тд - он ну очень полезен! А сейчас я его наличия даже на только что созданном объекте не замечаю.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2014, 09:05 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
Да, Кодгуард же встроенный в си, он не сторонний продукт. Так, на всякий случай уточняю:) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2014, 09:07 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
On 27.06.2014 10:05, KasKas wrote: > А как найти в тексте ошибку, когда до исполнения текста очередь не > доходит? И ошибка странным образом исчезает, при подключении EurekaLog? Это -- случайность. Либо она исчезат случайно, либо, скорее всего, она просто не проявляется, но не исчезает. А где будет проявляться -- неизвестно. На самом деле очень хорошо, что ошибка проявляется. Запомни конфигурацию того случая, когда она проявляется. > Подскажите пожалуйста кто-нибудь конкретнее что где и как смотреть/делать.. Тебе надо запустить приложение , добиться чтобы ошибка проявилась, и получить стек вызовов в момент ошибки (показывается в отладчике). Далее пойти по стеку вниз, от main, и смотреть, где есть твой код. Последнее место, где есть твой код будет первым кандидатом на рассмотрение на предмет поиска ошибки. Может также быть, что ошибка не в этом месте, а в каком-то другом месте, которое как-то влияет на это место, например, ошибка вызвана неправильным значением переменой, а переменная задаётся где-то ещё. Это естественно только первые точки, куда надо смотреть. Исходный код может быть не виден (как ты вроде бы писал) по двум причинам: -- его нет, т.е. это системный или библиотечный код -- он есть, но в программе нет доступной для отладчика отладочной информации, или она кривая (левая, испорченная, старая). Проверь что debug info есть, и добейся, чтобы оно было всегда при отладке правильное и актуальное. > И кодгуард мне нужен.. Если не в этой ситуации, то вцелом, для поиска Я за всю свою долгую карьеру ни разу не использовал ни одной хрени с таким или похожим названием, стало быть, вероятно, и тебе он не нужен. > утечек памяти, не удаленных динамически созданных объектов и тд - он ну > очень полезен! А сейчас я его наличия даже на только что созданном > объекте не замечаю.. Твоя ошибка вряд ли вызвана утечками памяти. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2014, 12:45 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
> Да, Кодгуард же встроенный в си, он не сторонний продукт. > Так, на всякий случай уточняю:) Ни в какой С он не встроен. Он может быть встроен в этот ваш Builder. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2014, 12:46 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
KasKasА как найти в тексте ошибку, когда до исполнения текста очередь не доходит? И ошибка странным образом исчезает, при подключении EurekaLog? Во-первых, CodeGuard сам может падать с AV если в системных каталогах завалялся несвежий borlndmm.dll. Во-вторых, EurekaLog может перехватывать те же функции управления кучей и тем самым просто вырубать CG к ЧМ. Отчего он, естественно, перестаёт падать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2014, 13:24 |
|
Включить CodeGuard и найти Access Vioaltion
|
|||
---|---|---|---|
#18+
KasKas Здравствуйте. Столкнулся со следующей проблемой: Есть проект, который в среде разработки запускается только 1 раз:). То есть если в нём хоть что-то изменить (просто добавить пробел) - то, после сборки, программа вылетает на Access Violation сразу же. До Application->Initialize() и FormCreate-ов всяких. При чем вылетает не на строке кода, а на вкладке CPU с кучей ассемблера. Но, стоит сделать Project->Clean и Project->Build - проект нормально запускается. Правда опять же, до первых изменений кода. KasKas Стало понятно куда смотреть. Но что дальше делать - не ясно=) Пока гуглю про __delayLoadHelper2 ... Спустя столько лет, я нашел решение: Disable incremental link option in Project > Options > C++ Linker. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2021, 23:45 |
|
|
start [/forum/topic.php?fid=57&msg=38680422&tid=2017186]: |
0ms |
get settings: |
16ms |
get forum list: |
8ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
35ms |
get topic data: |
4ms |
get forum data: |
1ms |
get page messages: |
361ms |
get tp. blocked users: |
2ms |
others: | 7ms |
total: | 436ms |
0 / 0 |