Здесь я рассказываю про отладочный менеджер памяти VirtualMM. Что это такое, когда его использовать, когда его не использовать, как его использовать, где скачать, как настроить, и так далее.
Текст этой статьи предполагает, что вы знакомы (хотя бы в общих чертах) с понятиями адресное пространство, страница памяти, резервирование (RESERVE) и выделение (COMMIT).
...when altering one's mind becomes as easy as programming a computer, what does it mean to be human?..
Показаны сообщения с ярлыком EurekaLog. Показать все сообщения
Показаны сообщения с ярлыком EurekaLog. Показать все сообщения
25 октября 2025 г.
27 января 2025 г.
Отключение визуальных диалогов об ошибках для фоновых приложений
Как правило, фоновые приложения выполняются в виде системных служб. В этом случае фатальные ошибки приводят к закрытию приложения и, возможно, автоматическому его перезапуску, если это указано в настройках приложения.
Но иногда по каким-то причинам вы можете захотеть сделать фоновое приложение в виде обычного пользовательского приложения. В этом случае вы не хотели бы, чтобы ваше приложение показывало какие-либо сообщения об ошибках.
Но иногда по каким-то причинам вы можете захотеть сделать фоновое приложение в виде обычного пользовательского приложения. В этом случае вы не хотели бы, чтобы ваше приложение показывало какие-либо сообщения об ошибках.
7 марта 2024 г.
Тайна Access Denied
К нам обратился клиент, который сообщил, что не может установить EurekaLog. Вернее, EurekaLog устанавливается, но последующий запуск IDE возбуждает ошибку:
Can't load package C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Packages\Studio25\EurekaLogExpert250.bpl. Access is denied.Причём клиент утверждал, что файл существует, доступ к нему есть, переустановка EurekaLog не помогает.
7 декабря 2023 г.
Опасайтесь вторичных исключений
К нам обратился клиент, который пожаловался на то, что EurekaLog генерирует отчёт об ошибке в ненужном месте. Фактически, у клиента было ожидаемое исключение, которое он хотел скрыть, показав вместо этого простое сообщение. Клиент любезно показал свой код:
try
Query.Delete; // - здесь возбуждается исключение
except
Query.Transaction.Rollback;
ShowMessage('Sorry, could not delete the report');
Exit;
end;
Что происходит? Неужели EurekaLog игнорирует код пользователя?4 апреля 2023 г.
Многие библиотеки/компоненты не тестируются на ошибки памяти
С нами связался клиент, который заявил, что EurekaLog вызывает исключение Access Violation в простом демонстрационном приложении.
В частности, приложение работает нормально при компиляции без EurekaLog и даёт ожидаемые результаты. Но приложение вылетает с ошибкой "Access violation at address 00410759 in module 'DemoApp.exe'. Read of address 83EC8B59" при компиляции с EurekaLog.
В частности, приложение работает нормально при компиляции без EurekaLog и даёт ожидаемые результаты. Но приложение вылетает с ошибкой "Access violation at address 00410759 in module 'DemoApp.exe'. Read of address 83EC8B59" при компиляции с EurekaLog.
5 октября 2022 г.
EurekaLog помогает не только вам, но и разработчикам используемых вами библиотек
С нами связался клиент, который утверждал, что его приложение отлично работало, пока он не добавил в него EurekaLog. Конкретнее, его приложение начало выбрасывать исключение
EAccessViolation при выполнении кода определённого события.20 июля 2022 г.
EurekaLog очищает моё изображение? (даже в VCL есть баги)
К нам обратился клиент, который утверждал, что EurekaLog удаляет его изображения в программе. В частности, утверждалось, что код клиента "работал отлично", пока в приложение не была добавлена EurekaLog. После добавления EurekaLog ранее "рабочий" код перестал работать, вместо этого очищая изображение. Клиент также утверждал, что если отключить опцию "Extended memory manager" в EurekaLog, то всё снова работает прекрасно, но если эта опция включена, то ничего не работает, даже если отключить все остальные опции отладки памяти.
Упрощённый код выглядит действительно просто:
Упрощённый код выглядит действительно просто:
Buffer := TBitmap.Create; try Buffer.SetSize(64, 64); Buffer.Canvas.StretchDraw(Rect(0, 0, 64, 64), Bitmap); Bitmap.SetSize(64, 64); Bitmap.Canvas.Draw(0, 0, Buffer); finally Buffer.Free; end;Видите ли вы проблему в этом коде?
11 мая 2022 г.
Почему рекомендуется перезапускать приложение после вылета
К нам обратился клиент с жалобой на то, что EurekaLog скрывает его приложение.
9 июля 2021 г.
Работа с криптографией в EurekaLog
EurekaLog - это трейсер исключений, т.е. инструмент, который устанавливает хуки и перехватывает возбуждение исключений, позволяя создать отчёт по необработанным исключениям. Тем не менее, в ней есть различного рода дополнительная функциональность, которую вы можете использовать в своих программах. И одной из таких возможностей являются функции криптографии.
22 февраля 2021 г.
EurekaLog и VirusTotal: непредвиденные последствия
К нам обратился человек, который сообщил о непредвиденном последствии загрузки программы с внедрённой EurekaLog на сервис VirusTotal.
Дело было так: клиент скомпилировал приложение с EurekaLog. В приложении была настроена отправка баг-отчётов по e-mail. Он загрузил скомпилированное приложение на сайт VirusTotal и получил результат проверки, что всё в порядке.
Пока всё достаточно типично. Странные дела начались на следующий день, когда клиент получил на e-mail отчёт от EurekaLog. Странность заключалась в том, что клиент не запускал своё приложение и не распространял его. А сам отчёт выглядел... необычно.
Дело было так: клиент скомпилировал приложение с EurekaLog. В приложении была настроена отправка баг-отчётов по e-mail. Он загрузил скомпилированное приложение на сайт VirusTotal и получил результат проверки, что всё в порядке.
Пока всё достаточно типично. Странные дела начались на следующий день, когда клиент получил на e-mail отчёт от EurekaLog. Странность заключалась в том, что клиент не запускал своё приложение и не распространял его. А сам отчёт выглядел... необычно.
4 февраля 2021 г.
Добавление EurekaLog в программу вызывает EOutOfResources (Out of system resources)
К нам обратился человек, который пожаловался на то, что его приложение работало нормально, пока он не добавил в него EurekaLog. После включения в проекте EurekaLog стало появляться исключение Out of system resources. Исключение возбуждалось вспомогательной функцией
OutOfResources из модуля Vcl.Graphics.25 декабря 2020 г.
Пройди опрос - выиграй лицензию EurekaLog
Правила просты: вы помогаете нам улучшить EurekaLog, принимая участие в опросе. Заполнение анкеты займёт всего несколько минут. По окончании опроса будут выбраны 3 случайных участника.
22 декабря 2020 г.
Даже в пустых приложениях есть баги
С нами связался человек, который утверждал, что нашёл баг в EurekaLog. Он обосновал это утверждение следующим образом: если создать новое приложение DataSnap и добавить в него EurekaLog, то приложение вылетит с Access Violation при выходе.
19 ноября 2020 г.
Добавление EurekaLog в программу вызывает Integer Overflow?
К нам обратился человек, который пожаловался на то, что его приложение работало нормально, пока он не добавил в него EurekaLog. После включения в проекте EurekaLog стало появляться исключение Integer Overflow. Исключение происходило внутри функции
_UStrCatN (функция конкатенации нескольких строк в RTL).9 октября 2020 г.
Добавление EurekaLog в программу вызывает Access Violation?
К нам обратился человек, который пожаловался на то, что его приложение работало нормально, пока он не добавил в него EurekaLog. После включения в проекте EurekaLog стало появляться исключение AccessViolation с текстом Access violation at address 00E15025 in module 'Project.exe'. Read of address 83EC8B69 и таким стеком:
- Contoso.pas TContosoEventMessage.BasePerform
- Vcl.Forms.pas TApplication.WndProc
- System.Classes.pas StdWndProc
- Vcl.Forms.pas TApplication.HandleMessage
- Vcl.Forms.pas TApplication.Run
- Project.dpr Initialization
8 марта 2020 г.
Как узнать, почему программа внезапно закрывается?
Иногда бывают ситуации, когда ваше приложение просто молча закрывается, и вы понятия не имеете почему. Как можно диагностировать подобные ситуации?
20 декабря 2011 г.
8 июня 2010 г.
Как узнать, почему зависла программа?
Сегодняшняя статья будет посвящена нескольким подходам к отладке зависаний программы.
4 июня 2010 г.
27 апреля 2010 г.
Новый класс Exception в Delphi 2009 и выше
Начиная с Delphi 2009, класс Exception, который был неизменным с самого первого выпуска Delphi, получил новые поля и свойства. А значит - и новые возможности. Поэтому, я хотел бы сделать обзор новых возможностей и показать, как их можно использовать.
Подписаться на:
Сообщения
(
Atom
)