Это семнадцатая публикация в серии: Эксперты для Delphi: Описание CnWizards. В прошлый раз я писал о Тестере зависимостей CnWizards (Relation Analyzer) – утилите для анализа зависимостей между скомпилированными и исходными файлами. Сегодня я расскажу о CnDebugViewer.exe - просмотрщике отладочной информации отправленной из модуля CnDebug.pas.
CnDebugViewer – программа для отображения отладочной информации посланной программой с помощью модуля CnDebug.pas а также с помощью стандартной API функции OutputDebugString. Полученная информация отображается в виде дерева. Её можно фильтровать, сохранять и загружать для дальнейшего изучения. Только распечатывать не умеет. Здесь, конечно не нужна широкоформатная интерьерная печать, но возможность вывести на печать хотя бы в каком-то виде была бы полезной.
Для отправки сообщений с отладочной информацией в CnWizards входит модуль CnDebug.pas содержащий определение класса TcnDebugViewer умеющего отправлять разнообразную информацию просмотрщику. Для получения информации из TcnDebugger-а используется отображаемый в память файл (Memory mapped file).
Главное окно CnDebugViewer-а выглядит так:
Большую часть окна занимает список отладочных сообщений полученных через функции из программы. Справа можно видеть список таймеров, инициализированных через CnDebugger. Под списком сообщений расположено окошко для детального просмотра информации по выделенной записи журнала. Над списком сообщений расположена панель фильтрации журнала сообщений. А в самом низу экрана находятся закладки для переключения между программами, отправляющими отладочные сообщения. Интерфейс CnDebugViewer-а описан в файле справки CnWizards.
Столбцы журнала сообщений:
- # – порядковый номер
- Information – текст сообщения
- Type – тип сообщения
- Level – уровень
- Thread – поток
- Tag – тэг
- TimeStamp – время отправки
В модуле CnDebug.pas определена глобальная функция возвращающая указатель на дефолтный экземпляр класса TCnDebugger. Все сообщения можно отправлять через эту функцию.
Класс TCnDebugger содержит кучу методов для отправки сообщения разных типов. Но сейчас я упомяну только один метод, который позволяет отправить сообщение просмотрщику, явно указав все возможные параметры сообщения:
procedure LogFull(const AMsg: string; const ATag: string; ALevel: Integer; AType: TCnMsgType; CPUPeriod: Int64=0);
Читайте дальше: все методы TCnDebugger для отправки отладочной информации.
Официальные сайты проекта CnWizards:
Когда заработаю первый миллион построю себе дом. А после сотого – целый посёлок, тем более что есть люди способные взять на себя строительство коттеджных поселков. Вот только строить буду ни в коем случае не в Подмосковье, и увы, даже не в России.
Классно!
ОтветитьУдалитьОчень сильно напомнило CodeRage 5 (http://www.embt.ru/RayKonopka.zip)
Только этот попроще и бесплатный(опенсорс)
CodeRage 5 - это конференция.
ОтветитьУдалитьПо-видимому, речь идёт об инструменте CodeSite, который поставляется вместе с Delphi XE.
К сожалению, я не работал с ним, и даже не изучал, поэтому затрудняюсь сказать насколько они похожи.
>По-видимому, речь идёт об инструменте CodeSite
ОтветитьУдалитьДа, спасибо за корректировку (так вышло что название не запомнил, только суть))
>который поставляется вместе с Delphi XE
Сильно урезан
А еще очень сильно напоминает DBugIntf из GExperts. Насколько я помню, очень давно была "война" м/у авторами CnWizards и GExperts. Ребята из GExperts обвиняли CnWizards, что те "слизали" их DBugIntf один в один и даже не позаботились переименовать методы и т.д.
ОтветитьУдалитьЯ работал с DebugIntf из gExperts. Сейчас уже не помню как там выглядел интерфейсный юнит, но сам просмотрщик там намного беднее по возможностям.
ОтветитьУдалитьА они очень давно его функционально "заморозили". Мне кажется, что DBugIntf не меняется лет уже эдак 5.
ОтветитьУдалить> DBugIntf не меняется лет уже эдак 5.
ОтветитьУдалитьКак и gExperts в принципе.