Показаны сообщения с ярлыком EurekaLog. Показать все сообщения
Показаны сообщения с ярлыком EurekaLog. Показать все сообщения

25 октября 2025 г.

Отладочный менеджер памяти VirtualMM

Здесь я рассказываю про отладочный менеджер памяти VirtualMM. Что это такое, когда его использовать, когда его не использовать, как его использовать, где скачать, как настроить, и так далее.

Текст этой статьи предполагает, что вы знакомы (хотя бы в общих чертах) с понятиями адресное пространство, страница памяти, резервирование (RESERVE) и выделение (COMMIT).

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.

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;
Видите ли вы проблему в этом коде?

9 июля 2021 г.

Работа с криптографией в EurekaLog

EurekaLog - это трейсер исключений, т.е. инструмент, который устанавливает хуки и перехватывает возбуждение исключений, позволяя создать отчёт по необработанным исключениям. Тем не менее, в ней есть различного рода дополнительная функциональность, которую вы можете использовать в своих программах. И одной из таких возможностей являются функции криптографии.

22 февраля 2021 г.

EurekaLog и VirusTotal: непредвиденные последствия

К нам обратился человек, который сообщил о непредвиденном последствии загрузки программы с внедрённой EurekaLog на сервис VirusTotal.

Дело было так: клиент скомпилировал приложение с 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
(все имена заменены; Contoso - это некая известная библиотека для Delphi).

8 марта 2020 г.

Как узнать, почему программа внезапно закрывается?

Иногда бывают ситуации, когда ваше приложение просто молча закрывается, и вы понятия не имеете почему. Как можно диагностировать подобные ситуации?

20 декабря 2011 г.

8 июня 2010 г.

Как узнать, почему зависла программа?

Сегодняшняя статья будет посвящена нескольким подходам к отладке зависаний программы.

27 апреля 2010 г.

Новый класс Exception в Delphi 2009 и выше

Начиная с Delphi 2009, класс Exception, который был неизменным с самого первого выпуска Delphi, получил новые поля и свойства. А значит - и новые возможности. Поэтому, я хотел бы сделать обзор новых возможностей и показать, как их можно использовать.