|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Добрый день! У нас в компании процесс работы устроен так, что EurekaLog не подключена к проекту Delphi, а внедряется в исполняемый файл с помощью события пост обработки, командой: ecc32.exe --el_nostats --el_alter_exe"XXX.dproj;XXX.exe" --el_config"Release.eof" В файле Release.eof параметры InjectCode=1 InjectInfo=1 это вызывает добавление в релизный код не только кода обработки ошибок EurekaLog, но и отладочную информацию, что величивает размер exe файла. У нас кроме исполняемого файла (exe) выкладывается так же файл с отладочной информацией (tds), и получается что отладочная информация дублируется - в exe и в tds файле. Я изменил Release.eof файл изменив два параметра: InjectInfo=0 dpTD32=1 При выполнении ecc32.exe с новым файлом конфигурации я получаю ошибку: Access violation at address 006ED913 in module 'ecc32.exe'. Read of address 00000008 Так как у меня Full Source Code, то я скомпилировал ecc32 и запустил под отладкой: Ошибка происходит в модуле ECompilerOutputEL8 в процедуре SaveUnit: Код: pascal 1. 2. 3. 4. 5.
Как мне получить желаемое - собранный exe файл с кодом обработки ошибок EurekaLog но с отладочной информацией вне exe - в tds? P.S. С InjectInfo=1 ошибки не возникает C уважением, Лисичкин Александр ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2022, 15:53 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
ChangeLogEurekaLog 7.9 update 4 (7.9.4.0), 25 May 2021 ... 6. Fixed: Access violation in ecc32 when injection of debug info is disabled ... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2022, 17:40 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Спасибо за ответ. Хотел бы уточнить: Судя по документации EurekaLog https://www.eurekalog.com/help/eurekalog/index.php?debug_information_page.php Отладочная информация может сохраняться отдельно от исполняемого файла только в elsym. Только для версии EurekaLog 7.7.8.103 (которую я использую) программа Settings Editor в закладке Debug Information не содержит переключателя "Store all names externally", хотя в исходниках расширение elsym есть. Плюс на странице https://www.eurekalog.com/showchangelog_delphi.php указано: EurekaLog 7.6 (7.6.0.0), 20-July-2017 9. Added: New option to stip all string names from debug information and store it in external file Могу ли я в своей версии EurekaLog хранить отладочную информацию в elsym файле - какой параметр в eof за это отвечает? Если нет - то начиная с какой версии это поддерживается ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 09:24 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Мыж программисты :( На основании исходников, я определил, что это параметр ExternanNames=1 release.eof ExternanNames=1 InjectInfo=0 ecc32.exe отработал без ошибок, но при обработке искусственной ошибки call stack не содержит информации о строках проекта. Что я делаю не так ?? P.S. .elsym файл я поместил рядом с .exe ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 12:06 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Lisichkin Отладочная информация может сохраняться отдельно от исполняемого файла только в elsym Нет, это совершенно разные настройки. 1. Если внедрение отладочной информации отключено ("Add debug information" = False), то опция "Store all names externally" ничего делать не будет. 2. Если внедрение отладочной информации включено ("Add debug information" = True), то отладочная информация внедряться будет в любом случае. Но без "Store all names externally" внедряться будет вообще всё, а с "Store all names externally" - только смещения, без текстовых имён. Текстовые/читабельные имена будут сохранены во внешний файл .elsym. Эта опция в основном предназначена для защиты программ от взлома. Lisichkin Для версии EurekaLog 7.7.8.103 (которую я использую) программа Settings Editor в закладке Debug Information не содержит переключателя "Store all names externally" Это ложь. См. скриншот. Lisichkin при обработке искусственной ошибки call stack не содержит информации о строках проекта У вас отключена отладочная информация. Да, формально "Store all names externally" создала файл с именами, но приложить эти имена не к чему, т.к. отладочная информация отключена. Вы чего сделать-то хотите? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 15:09 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Я хочу вынести отладочную информацию во внешний файл (tds), так что бы при возникновении ошибки и формировании call stack, стек формировался с человеко читаемой информацией из tds фала. Так работает JCL, беря информацию из jdbg ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 15:44 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 15:50 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Ну так а внешний файл-то вам зачем? Для каких целей? Я вот не понял, причём тут TDS: 1. JCL берёт отладочную инфу из JDBG - своего формата. 2. Но так и EurekaLog тоже берёт инфу из своего формата. Если вы хотите сделать внешний файл, то включайте "Include debug information" и "Store all names externally". Будет вам .elsym внешний. Полностью отключить отладочную информацию нельзя, поскольку информация о границах функций используется для проверки стека. Нет информации = нет стека. Выгружаются только имена, таким образом стек построить можно, но без имён. P.S. У вас скриншот не от 7.7.8.103, а от более старой версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:04 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
авторУ вас скриншот не от 7.7.8.103, а от более старой версии. Возможно - раньше стояла версия 7.4.9 - ставил поверх, может и получил что есть :( В процессе разработки формируется файл размером 52,5 Mb. После добавления отладочной информации - получается 68,1 Mb. Файл лежит на сетевой шаре - и пользователи жалуются на долгий запуск. Аналитики создали задачу - исследование, как добиться ускорения. Вот я и смотрю варианты как уменьшить exe. P.S. с ExternanNames=1 получил размер 62,1 маловато будет ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:12 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Получается что лучший вариант - это маленький, инсталлятор (копировщик на локальный диск). Но руководство не очень одобряет эту идею, то ли из безопасности то ли не знаю по чему :( ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:18 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Ну приехали. Во-первых, к размеру .exe файла это никакого отношения не имеет. При запуске файла он не загружается в память целиком: файл только проецируется, а читается в память только по мере обращения. Во-вторых, отладочная информация грузится в память при старте. Сделано это для того, чтобы при возникновении исключения она была бы уже доступной для создания стека/отчёта. Таким образом, выгружать её в отдельный файл нет смысла: грузить её из .exe или из внешнего файла - без разницы. Если тормоза вызваны загрузкой отладочной инфы - отключите сжатие и не создавайте .elsym. Тогда загрузка будет максимально быстрой, т.к. инфа будет храниться в готовом виде. У вас проверки памяти включены? Если да, то вот ещё потенциальное место для задержек, если у вас много операций с памятью делается. Если потоки создаются/уничтожаются в огромных количествах - ещё одно место. Ну и, конечно, миллионы скрытых исключений. Всё остальное - это не от EurekaLog. Тут надо профайлером смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:25 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Lisichkin, пользователи эту программу по сто раз на дню запускают? Сеть какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:40 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
GunSmoker Во-первых, к размеру .exe файла это никакого отношения не имеет. При запуске файла он не загружается в память целиком: файл только проецируется, а читается в память только по мере обращения. Lisichkin Файл лежит на сетевой шаре ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:41 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Нет, не копирует. По умолчанию, я имею в виду. Чтобы она копировала - надо ручками у exe поставить флаг IMAGE_FILE_NET_RUN_FROM_SWAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:43 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Спасибо за советы! Да, я понимаю что тормоза могут возникать из-за разных вещей - потоки, подключение к БД и т.п, но поверите перетащить на компьютер с сетевого диска по VPN 60 с гаком мега байт это занимает много времени. К примеру я прошлым летом на удаленке работал по GPS модему в деревне. Запуск приложения занимал минуты две-две с половиной. Когда у нас провели оптоволокно - запуск (время от от щелчка по ярлыку до появления окна логина) сократился до 10-15 секунд. Да приложение тяжелое - Oracle/DevExpress и т.п. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:47 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
авторпользователи эту программу по сто раз на дню запускают? Сеть какая? Удаленка - VPN авторIMAGE_FILE_NET_RUN_FROM_SWAP У копирования exe в swap есть особенность. Если долгое время не перезагружаться/выключаться(что нормально для ноутбуков), swap виндовый переполняется, и программа перестает запускаться с ошибкой - "недостаточно ресурсов"(точный текст ошибки не помню). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 16:51 |
|
EurekaLog - Access violation in module ecc32.exe
|
|||
---|---|---|---|
#18+
Вы не понимаете, что делает флаг IMAGE_FILE_NET_RUN_FROM_SWAP. Этот флаг просит Windows загрузить .exe файл в память целиком, если он запущен с сетевого пути. Файл подкачки здесь совершенно не при чём. Под "SWAP" здесь понимается ОЗУ, своп-файл же будет использоваться только при нехватке ОЗУ. Это так называемая "memory backed by swap". Соответственно, если этот флаг не указан (по умолчанию), то файл .exe не грузится в память целиком. Он грузится только по мере необходимости. Поэтому не имеет значения, какого размера он будет. Вы можете легко это проверить, добавив в ресурсы .exe какой-нибудь архив этак на 700 мегабайт. Ваш 760 мб файл будет загружаться с той же скоростью что и 60 мб файл. У вас проблема не с размером файла, а с тем, что этот файл делает при запуске. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2022, 17:23 |
|
|
start [/forum/topic.php?fid=58&tid=2036690]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 406ms |
0 / 0 |