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

25 октября 2025 г.

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

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

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

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 не помогает.

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

8 марта 2020 г.

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

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

20 мая 2018 г.

Дело о случайных вылетах

Один начинающий программист спросил, почему вылетает с Access Violation очень простой и, что интереснее, явно корректный код.

Примечание: слово "случайных" в заголовке означает, что вылет происходит в непредсказуемом месте - разном, в зависимости от приложения. Но в рамках одного конкретного приложения вылет всегда детерминирован (и, следовательно, воспроизводим).

7 февраля 2018 г.

Интерпретируйте результаты экспериментов правильно

К моему переводу статьи Руди о String и PChar добавили замечательный комментарий, на который мне хотелось бы ответить, но объём заблуждений не позволяет это сделать простым ответом в комментарии.

22 мая 2017 г.

Дело о зависании Delphi 7

Очередное детективное расследование. В этот раз мы разбираемся, почему Delphi 7 наглухо виснет при старте.

8 мая 2017 г.

Windows Error Reporting и Delphi

Windows Error Reporting (сокращённо: WER) — это набор технологий, встроенных в Windows, который собирает информацию о сбое в приложениях при их вылетах (а также о сбоях ядра) и отправляет её на сервера Microsoft. Разработчик программного обеспечения по этой информации может разработать и опубликовать соответствующее обновление. Затем конечный пользователь, отправляя отчёт, увидит, что для этой ошибки в программе доступно исправление, сможет скачать его и обновить программу.

В этой статье я хотел бы посмотреть на его историю, концепцию и как вы можете использовать его на практике для своих приложений Delphi (или, наоборот, не использовать).

19 февраля 2015 г.

Фреймы на стеке (стековые фреймы)

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

27 февраля 2012 г.

Разработка системы плагинов, часть 5: отладка и обработка ошибок

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

См. также Разработка API (контракта) для своей DLL и Разработка системы плагинов, часть 9: подводные камни.

1 сентября 2011 г.

Три составные части хорошего описания ошибки

Источник.

Запомнить правила составления хорошего описания ошибки совсем нетрудно. Каждое хорошее описание ошибки должно содержать ровно три вещи:
  • Какие шаги привели к ошибке.
  • Что вы ожидали увидеть.
  • Что вы в самом деле увидели.

6 ноября 2010 г.

Шрифты в Windows XP и Windows Vista/7

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

8 июня 2010 г.

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

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

28 апреля 2010 г.

Чего не хватает в Delphi?

Ну, этот пост, конечно же, будет говорить с точки зрения отладки/работы с исключениями.

27 апреля 2010 г.

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

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

15 апреля 2010 г.

WinSock и Delphi

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